一、环境说明
1、VLD 内存检测工具,只能检测使用VC++编译器,不能用于检测MinGW编译器
所以要检测 Qt内存泄露问题编译器一定要是MSVC。
环境要求:
1、VLD 版本要2.X以上 不能使用1.X的版本。否则检测不准确,Qt检测会提示很多内存泄露。(本人使用vld-2.3-setup.exe)
2、Qt for VS (本人使用qt-win-opensource-4.8.0-vs2008.exe)
3、编译器是MSVC(VS默认编译器就是MSVC这里不需要配置)
二、下载VLD
(1) http://vld.codeplex.com/releases
(2)
三、安装VLD
双击 vld-2.3-setup.exe
安装过程会弹出如下对话框,
选择是
安装完成
本人安装的路径是 D:\VLD
新的版本解决了path问题,所以我们无需做过多的设置
四、VS 配置
在“工具”->“选项”->”项目和解决方案“->"VC++目录"
包含文件 添加VLD的头文件路径 D:\VLD\include
库文件 添加VLD的库路径 D:\VLD\lib\Win32
如下如所示:
完成配置
2、在 main.cpp 中加入代码
#ifdef _DEBUG
#include "vld.h"
#endif
完成可以实现内存检测了
五、测试例子
#include "qthelloworld.h"
#include
#ifdef _DEBUG
#include "vld.h"
#endif
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QtHelloWorld w;
w.show();
QtHelloWorld *pTmp = new QtHelloWorld;
return a.exec();
}
VLD检测结果如下:
Visual Leak Detector Version 2.3 installed.
WARNING: Visual Leak Detector detected memory leaks!
---------- Block 1 at 0x00C61018: 28 bytes ----------
Call Stack:
e:\vstest\qthelloworld\qthelloworld\main.cpp (15): QtHelloWorld.exe!main + 0x7 bytes
D:\Qt4.8ToVs2008\4.8.0\src\winmain\qtmain_win.cpp (131): QtHelloWorld.exe!WinMain + 0x12 bytes
f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c (574): QtHelloWorld.exe!__tmainCRTStartup + 0x35 bytes
f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c (399): QtHelloWorld.exe!WinMainCRTStartup
0x7C81776F (File and line number not available): kernel32.dll!RegisterWaitForInputIdle + 0x49 bytes
Data:
24 8A 40 00 70 10 C6 00 00 8A 40 00 00 00 CD CD [email protected]... ..@.....
24 11 C6 00 CD CD CD CD CD CD CD CD $....... ........
Visual Leak Detector detected 1 memory leak (64 bytes).
Largest number used: 64 bytes.
Total allocations: 64 bytes.
Visual Leak Detector is now exiting.