VLD
VLD(Visual Leak Detector)是一款用于 Visual C++ 的免费内存泄露检测工具。相比较其它内存泄露检测工具,它在检测到内存泄漏的同时,还具有如下特点:
可以得到内存泄漏点的调用堆栈,如果可以的话,还能得到其所在文件及行号;
可以得到泄露内存的完整数据;
可以设置内存泄露报告的级别;
它是一个已经打包的 lib,使用时无须编译源码。对于使用者自己的代码,只需要做很小的改动;
源码使用 GNU 许可发布,并有详尽的文档及注释。对于想深入了解堆内存管理的读者,是一个不错的选择。
可见,VLD 简单易用。只需要做很小的改动(添加库并包含头文件),然后正常运行自己的程序,就可以发现内存问题;如果深入源码,可以学习到堆内存分配与释放的原理、内存泄漏检测的原理及内存操作的常用技巧等。
下载、安装
https://kinddragon.github.io/vld/
安装后的文件夹中主要包括:
bin:包含 dbghelp.dll、vld_x86.dll 文件
include:包含 vld.h、vld_def.h 文件
lib:包含 vld.lib 文件
QT中使用VLD
1、在pro文件中加入库的
win32: LIBS += -L$$PWD/'../../../../Program Files (x86)/Visual Leak Detector/lib/Win64/' -lvld
INCLUDEPATH += $$PWD/'../../../../Program Files (x86)/Visual Leak Detector/lib/Win64'
INCLUDEPATH += $$PWD/'../../../../Program Files (x86)/Visual Leak Detector/include'
DEPENDPATH += $$PWD/'../../../../Program Files (x86)/Visual Leak Detector/lib/Win64'
2、
#include "mainwindow.h"
#include <QApplication>
#include <vld.h> //加入头文件
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
char *name = new char[5];
return a.exec();
}
3、效果