近日一内存泄露找了很久,上网查资料发现这样个东东。。(转自http://www.cnblogs.com/chingliu/archive/2011/12/10/2288633.html,3Q)
Visual Leak Detector(VLD):用于Visual C++的免费的内存泄露检测工具,可从http://www.codeproject.com/tools/visualleakdetector.asp下载,该软件以库形式与被测工程一起使用,VLD是开源的,不必担心版权问题。
先从网站下载VLD的zip包,当前最高版本是V1.0,解压后得到vld.h、vldapi.h、vld.lib、vldmt.lib、vldmtdll.lib、dbghelp.dll等文件,把这些所有.h头文件拷贝到VC默认的include目录下,将所有.lib文件拷贝到VC默认的lib目录下,安装工作就完成了。
使用VLD很简单,只须在包含入口函数的CPP或C文件中最前面加入#include<vld.h>。如果当前工程定义预编译head文件(如stdafx.h),则放在“#include <stdafx.h>”语句之后。按Debug方式运行被测程序,等程序运行结束时,查阅VC的output窗口,会有“Visual Leak Detector is now exiting.”一句打印信息,在这条件信息之前,如果当前程序没有内存泄露会有“No memory leaks detected.”信息打印,但如果有内存泄露,将有类似如下信息打印:
C:\VcTester21\sample\vc6\SampleMain.c (80): main
crt0.c (206): mainCRTStartup
0x7C816FD7 (File and line number not available): RegisterWaitForInputIdle
Data:
CD CD CD CD CD ........ ........
Visual Leak Detector detected 1 memory leak.
这个信息指明当前发生内存泄露所在的函数及源文件行号,泄露内存块的地址、长度及当前内存值。用鼠标双击指示源码行的提示信息,VC即自动跳转到相应代码行。