使用 VLD 检测内存泄漏

article/2025/9/17 20:38:03

背景

在实际的项目实践中,随着程序越复杂,内存管理就显得越重要。虽然有许多方法可以防止内存泄露,但在实践中还是难免出现内存泄露的情况,并且内存泄露问题很难被发现和定位其位置。

VLD

Visual Leak Detector 是一款用于 C++ 的免费内存泄露检测工具,并且它在检测到内存泄露的同时还可以得到内存泄露时的调用堆栈以及所在文件和行号。

Visual Leak Detector下载地址:

VLD 主页:https://kinddragon.github.io/vld/

文档地址:https://github.com/KindDragon/vld/wiki

GitHub 地址:https://github.com/KindDragon/vld

VLD 的使用

①.安装

从主页下载安装包后直接默认安装即可;也可以下载源码编译生成库文件使用。

②.目录说明

VLD 安装后的目录如下所示:
在这里插入图片描述

bin:包含了运行时的库文件 - dbghelp.dll、vld_x64.dll

include:包含了编译时要用到的头文件 - vld.h、vld_def.h

lib:包含了编译时要用到的库文件 - vld.lib

vld.ini:vld 的配置文件,可以将其拷贝到程序运行目录,以仅对该程序时生效

③.项目配置

需要在项目属性中配置 vld 头文件及库文件路径:

附加包含目录:C:\Program Files (x86)\Visual Leak Detector\include

附加库目录:C:\Program Files (x86)\Visual Leak Detector\lib\Win32

附加依赖项:vld.lib

④.拷贝动态库

把 bin 中的相关文件拷贝到项目的运行目录中:
在这里插入图片描述

⑤.程序运行

在项目的 main.cpp 文件中添加头文件:include<vld.h>。然后在 Debug 模式下运行程序,VLD 会输出内存泄漏报告,其中包含了完整的调用堆栈。

⑥.VLD 配置文件说明

配置文件中关键参数:

MaxTraceFrames:输出的堆栈级数限制

AggregateDuplicates:若为"yes",则只在报告中输出特定泄漏位置的第一次泄漏

MaxDataDump:转储数据大小限制

ReportTo:内存泄漏报告的输出形式,可以使用"debugger"、 "file"或者 “both”

ReportFile:内存泄漏报告的文件名,默认"memoryleakreport.txt"

应用示例

①.内存泄漏代码

#include "vld.h"int main()
{int *p = new int(20);return 0;
}

②.代码运行
在这里插入图片描述

如上图所示,vld 检测出内存泄露时的调用堆栈及所在行号,双击即可定位到代码目录。

③.报告分析

报告中包含了几个内容:

【Block X at …: Y bytes】第 X 个块(new)泄漏了 Y 个字节;

【Call Stack】泄漏内存的堆栈信息,双击对应的行可以跳到具体代码位置;

【Data】泄漏内存的数据信息;

【Visual Leak Detector detected X memory leak (Y bytes).】总共 X 处泄漏,共泄漏字节数 Y 字节;

④.修改代码

定位内存泄漏代码并修改代码后:

在这里插入图片描述

注意事项

工程目录中不能包含中文,否则 vld 将不能显示调用堆栈信息,如下图所示:

在这里插入图片描述

在这里插入图片描述


http://chatgpt.dhexx.cn/article/3LR8ySgv.shtml

相关文章

使用vld查看OPCode

本文转载自&#xff1a;https://gywbd.github.io/posts/2016/2/vld-opcode.html 前几天翻译了一篇关于Zend引擎的文章&#xff0c;这篇文章主要是讲Zend引擎怎么执行PHP代码的&#xff0c;确切地说是怎么执行OPCode的&#xff0c;因为PHP程序会先被编译为中间形式&#xff08;…

php windows vld,PHP之opcode及VLD使用

OpCode&#xff0c;即Operation Code&#xff0c;操作码。通常是指计算机指令中的一部分&#xff0c;用于指定要执行的操作&#xff0c; 指令的格式和规范由处理器的指令规范指定。 通常opcode还有另一种称谓&#xff1a;字节码(byte codes)。例如Java编译后生成的class文件。 …

vld扩展

PHP代码的执行实际上是在执行代码解析后的各种opcode。通过vld扩展可以很方便地看到执行过程中的opcode。 一、安装vld扩展 git clone https://github.com/derickr/vld.git cd vld phpize ./configure --with-php-config/usr/local/php71/bin/php-config --enable-vld make &am…

vld使用

vld是一款免费的Visual C内存分析工具&#xff0c;下面来介绍一下怎么在qt中使用vld。 1.下载。去官网http://vld.codeplex.com/下载&#xff0c;我下的是2.5.1版本 2.安装。在安装目录下找到vld.lib文件。有32位和64位的注意位数。复制到qt安装目录的lib文件夹中 复制vld安装…

WINDOWS下内存泄漏检测工具VLD(Visual Leak Detector)的使用

VLD安装&#xff1a; https://kinddragon.github.io/vld/ 点击下载安装器 安装完成后&#xff0c;会自动将其include目录添加到VS的附加安装目录&#xff0c;将其静态库目录(lib目录)添加到VS的附加库目录&#xff0c; 无需手动添加include目录和lib目录 VLD使用&#xff1…

VLD(Visual LeakDetector)内存泄露库的使用

VLD简介 由于C/C语言没有所谓的垃圾收集器&#xff0c;内存的分配和释放都需要程序员自己来控制&#xff0c;这会给C/C程序员带来一定的困难。当您的程序越来越复杂时&#xff0c;它的内存管理也会变得越来越困难。内存泄漏、内存越界是最常见的内存问题之一。内存泄漏如果不是…

内存泄漏查找工具VLD的使用

1.什么是vld&#xff1f; Visual Leak Detector(VLD)同样是一款开源检测内存泄露软件的简称。 官方的介绍如下地址&#xff1a;在Visual Studio调试器下运行程序时&#xff0c;Visual Leak检测器将在调试会话结束时输出内存泄漏报告。泄漏报告包括完整的调用堆栈&#xff0c;显…

检查内存泄露的利器--VLD使用指南

1. VLD简介 Visual Leak Detector是一个免费的&#xff0c;强大的&#xff0c;开源的,可视化C 内存泄漏检测工具。 VLD容易使用。安装后&#xff0c;只需告诉Visual C 在哪里可以找到包含的头文件和库文件。然后&#xff0c;只需将以下行添加到代码中&#xff0c;即可将其与任…

内存泄露检测工具VLD(Visual Leak Detector)使用说明

目录 一、内存泄漏问题 二、VLD工具使用说明 1 下载VLD 2 安装VLD 3 使用VLD&#xff08;第一个种方法&#xff09; 3.1 附加头文件目录 3.2 附加库目录。 4 使用VLD&#xff08;第二个种方法&#xff09; 4.1 打包VLD_SDK 4.2 附加头文件目录 4.3 附加库目录。 5 …

【矩阵论】范数和矩阵函数(2)

范数及矩阵函数之收敛性与矩阵函数 定义矩阵的范数是为了讨论矩阵的收敛性。 注&#xff1a;范数和矩阵函数这个系列的&#xff08;1&#xff09;&#xff08;2&#xff09;等划分是按照章节来的&#xff0c;与视频的分集并不完全一致。 一. 收敛定理 1. 按坐标收敛 2. 按范数…

向量范数和矩阵范数的理解

向量范数 今天来聊一聊机器学习矩阵论的相关知识——范数&#xff08;Norm&#xff09;。 在学习机器学习基础算法的推导过程中&#xff0c;可以看到很多地方都应用到了这个范数。范数属于矩阵论的知识范围&#xff0c;可见数学基础的重要性。 机器学习的数学基础重点推荐—…

【矩阵论】范数和矩阵函数(1)

范数及矩阵函数之范数的概念 首先将本章的内容做以下大致的梳理&#xff1a; 我们通过范数的概念来解决矩阵函数的问题&#xff0c;利用矩阵的函数可以解决很多实际问题。 一. 概念与定义 1. 范数与赋范线性空间 &#xff08;1&#xff09;范数——向量空间上的满足某些性质…

矩阵范数与矩阵的模

矩阵范数&#xff08;matrix norm&#xff09;是数学中矩阵论、线性代数、泛函分析等领域中常见的基本概念&#xff0c;是将一定的矩阵空间建立为赋范向量空间时为矩阵装备的范数。应用中常将有限维赋范向量空间之间的映射以矩阵的形式表现&#xff0c;这时映射空间上装备的范数…

【数学】向量范数和矩阵范数(几种范数 norm 的简单介绍)

目录&索引 一、什么是范式&#xff1f;二、向量范式1-范数2-范数P-范数∞-范数-∞-范数 三、矩阵范式1-范数2-范数∞-范数F-范数 四、小结 一、什么是范式&#xff1f; 范数&#xff0c;是具有“长度”概念的函数。在线性代数、泛函分析及相关的数学领域&#xff0c;范数是…

鬼畜视频制作必备——vegas pro特别版歌声合成工具UTAU

很好奇鬼畜是怎么做出来的&#xff1f;绝大部分up主用的必备的就是vegas&#xff0c;剪视频比较全能&#xff0c;比如&#xff1a;添加字幕、旋转视频、导入导出视频、导入导出视频等等&#xff0c;同时还提供了先进的悬停取消技术、高分辨率格式高达4K的音频素材以及支持4K UH…

平板电脑必装十大软件_知乎高赞回答:职场新人必装的电脑软件有哪些?太全了!...

本文首发于知乎,我觉得对大家很有帮助,因此同步了过来。 来源 :Tools指南知乎号 之前在微博上看到一篇文章,其中有一点让我很诧异:一个新入职的员工,不知道用什么软件打开rar压缩包。 但想到我刚入职场时,也是这个样子,马上就释然了。 但有一个新的问题出现了:刚入职场…

动态图册用HTML怎么制作,imgplay gif动图制作如何使用?imgplay图文使用教程

imgplay是一款利用图片、视频就能轻松制作GIF的应用软件。通过这款软件&#xff0c;大家可以切身感受拍照片和视频时的精彩瞬间&#xff0c;下面小编就为大家讲解imgplay软件的使用方法。 推荐下载&#xff1a; 软件名称&#xff1a;imgplay gif动图制作软件 3.0.1 官网安卓版软…

Filmigo视频剪辑VIP,这是一款多功能视频编辑、影片剪辑、图片美化、视频/音频制作 影音软件,功能强大!

《Filmigo视频剪辑》介绍&#xff1a;这是一款多功能视频编辑、影片剪辑、图片美化、视频/音频制作、配乐美颜影音软件&#xff0c;是一款简单易用的视频编辑、视频裁剪与视频剪辑工具&#xff0c;获得2018年google paly“娱乐奖项”应用APP&#xff1b;全球超过三千万视频剪辑…

视频编辑软件,哪款好?

过完了快快乐乐的圣诞节&#xff0c;拍了很多美美的照片&#xff0c;单独将照片一张一张放出来是不是显得太过于单调了&#xff0c;如果将美美的照片整合成一个美美的视频&#xff0c;那么是不是会吸粉更多呢&#xff1f;&#xff01; 要制作出一部画面精良的视频&#xff0c;…

android系统视频剪辑app推荐,知乎10w人收藏:玩短视频必装的9款剪辑App(最全)...

声明&#xff1a;本文来自于微信公众号 微果酱(ID&#xff1a;wjam123456)&#xff0c;作者&#xff1a; 橙子&#xff0c;授权站长之家转载发布。 做运营的 每天都要面临一些新难题 比如老板想追潮流做短视频 吐血写脚本、拍完视频 磨刀霍霍向猪羊准备剪视频 打开电脑剪辑软…