目录
1 软件介绍
2 下载与安装
2.1 工具下载地址
2.2 工具安装
3 配置与使用
3.1 配置环境变量
3.2 配置vs
3.3 VLD的配置
4 测试代码与报告生成
1 软件介绍
Visual Leak Detector 2.5.1 (VLD)是一个小巧内存检测工具,是为Visual C++用户设计的。其特色为:
- 简单易用,只需要在需要进行内存泄漏检测的的主程序代码中加入#include "VLD.h“,并将编译好的Lib文件放入默认的库目录,然后在Visual C++用Debug模式编译运行程序,程序运行结束后便可在Visual C++的输出窗口看到内存泄露检测结果。
- 通过宏定义控制测试行为,如报告的详略等。
- 支持Windows X64。
- 检测报告很直观,甚至能显示泄漏内存的内容
2 下载与安装
2.1 工具下载地址
Visual Leak Detector 官网下载地址:Visual Leak Detector | Enhanced Memory Leak Detection for Visual C++,点击 Download Installer 绿色按钮可下载工具的安装程序 vld-2.5.1-setup.exe。
也可去 Git 仓库 releases 界面 下载安装程序 vld-2.5.1-setup.exe。
还可以使用国内的网络资源下载:百度网盘-vld-2.5.1-setup.exe。
2.2 工具安装
点击next
继续点击next
勾选三个,然后点击next
确认自己的设置,确认一下,需要修改则点击Back返回修改,否则点击install进行安装。
注意:安装前需要关闭Visual Studio
安装完成后的目录结构:
3 配置与使用
3.1 配置环境变量
找到Visual Leak Detector的安装目录,复制路径,把路径配置到环境变量中。Vld支持32位和64位,以防万一我们都配置上。
3.2 配置vs
打开vs,我这里使用的是vs2017,根据自己版本进行配置。
选择主工程,右键打开属性界面,找到“配置属性-VC++目录-包含目录/引用目录”
配置Visual Leak Detector的lib和include目录,如图所示。
找到“配置属性-C/C++-预处理器-预处理器定义“,点击”编辑“进入编辑框,输入【_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING】,点击确定保存,如图所示
VLD默认在程序结束后生成报告,默认生成得报告显示在调试窗口和输出窗口中,在“配置属性-链接器-调试-生成调试信息”下拉选项框中选择【生成经过优化以共享和发布的调试信息(/DEBUG:FULL)】,如图所示
3.3 VLD的配置
使用的时候需要把以下几个选中的文件复制到工程中,如图所示
3.2说到可以在调试窗口和输出窗口显示调试信息,但也可以让调试信息输出到文件中,看的时候更加清晰明了。
上图中的vld.ini便可以进行配置。
ReportTo默认为debugger,意思是输出到调试窗口,改为file就输出到文件中了,通过ReportFile配置文件生成得位置,如图所示
- 在对于debug下文件中添加#include "vld.h"与#pragma comment(lib, "vld.lib")便可使用VLD了
- 如果是release版本,还需要添加在#include "vld.h"前加一条#define VLD_FORCE_ENABLE,否则将不能进行内存泄漏的检测
4 测试代码与报告生成
可以用以下代码进行测试:
#include <iostream>
#include <string>
#include <Windows.h>
#include "vld.h"
#pragma comment(lib, "vld.lib")
using namespace std;
int main()
{
cout << "start" << endl;
static int *a = new int;
int *arr = new int[10];
int aaa = 10;
//delete a;
cout << "end" << endl;
return 0;
}
编译完成点击F5启动进程,如图所示
查看报告,可以看到有几处内存泄露,并且定位到内存泄露点的代码行,如图所示:
进入代码中查看,可以看到这两行没有被释放
手动释放一下再测试,可以看到已经没有内存泄露的地方了: