簡介
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();
}
輸出: