简介
Visual Leak Detector是一款用于Visual C++的免费的内存泄露检测工具。相比较其它的内存泄露检测工具,它在检测到内存泄漏的同时,还具有如下特点:
- 可以得到内存泄漏点的调用堆栈,如果可以的话,还可以得到其所在文件及行号;
- 可以得到泄露内存的完整数据;
- 可以设置内存泄露报告的级别;
- 它是一个已经打包的lib,使用时无须编译它的源代码。而对于使用者自己的代码,也只需要做很小的改动;
- 他的源代码使用GNU许可发布,并有详尽的文档及注释。对于想深入了解堆内存管理的读者,是一个不错的选择。
下载安装
安装包下载。
默认安装,注意勾选:
配置
VLD 内存检测工具,只能检测使用VC++编译器(即MSVC类型编译器, 如果有安装VS则就有这编译器),不能用于检测MinGW编译器。
三种配置方式:
第一种
复制vld安装目录下include文件夹中的文件vld.h和vld_def.h到qt安装目录的include文件夹中。
将“vld安装目录/lib/Win64"或者“vld安装目录/lib/Win32"(注意位数,根据你的Qt库位数确定)下的vld.lib拷贝到Qt默认的lib目录,就完成安装了。
第二种
修改.pro文件,添加如下内容:
win32{
CONFIG(debug, debug|release) {
INCLUDEPATH += C:/software/VLD/include
DEPENDPATH += C:/software/VLD/include
LIBS += -LC:/software/VLD/lib/Win32 -lvld
}
}
注意:
C:/software/VLD
是自己的安装路径。- 配置完成后,重启qtcreator或者执行qmake。
第三种
直接在main.cpp
头部添加:
#pragma comment(lib,"C:/software/VLD/lib/Win32/vld.lib")
#ifdef _DEBUG
#include "C:/software/VLD/include/vld.h"
#endif
测试使用
建一个工程。在main.cpp中添加头文件。#include<vld.h>
或者:
#ifdef _DEBUG
#include "vld.h"
#endif
其他代码如下:
void test()
{
char *p = new char[5];
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
test();
return a.exec();
}
输出: