标签:
Visual Leak Detector(VLD)是一款用于Visual C++的免费的内存泄露检测工具。他的特点有:可以得到内存泄漏点的调用堆栈,如果可以的话,还可以得到其所在文件及行号; 可以得到泄露内存的完整数据; 可以设置内存泄露报告的级别;并且是开源免费的。
http://www.codeproject.com/tools/visualleakdetector.asp
本文后附有vld1.0的工具包,下载解包后就可使用。
方法一:
解压之后得到vld.h, vldapi.h, vld.lib, vldmt.lib, vldmtdll.lib, dbghelp.dll等文件。将.h文件拷贝到Visual C++的默认include目录下,将.lib文件拷贝到Visual C++的默认lib目录下,将dbghelp.dll拷贝到你的程序的运行目录下,便安装完成了
方法二:
解压之后得到vld.h, vldapi.h, vld.lib, vldmt.lib, vldmtdll.lib, dbghelp.dll等文件。将.h文件和.lib文件拷贝到你要检测的工程文件所在的目录里(只针对此工程),将dbghelp.dll拷贝到你的程序的运行目录下。就完成安装了。
在包含入口函数的.cpp文件中包含vld.h就可以了。下面以一个例子进行说明(源程序见附录):
内存泄露所在的位置 |
"WARNING: Visual Leak Detector detected meory leaks!"
"No memory leaks detected"
1 #include "vld.h" 2 #include "iostream.h" 3 #include "stdio.h" 4 #include "stdlib.h" 5 #include "string.h" 6 7 void Function1(char *p) 8 9 { 10 char *pTmp = new char[255]; 11 memset(pTmp, 0x0, 255); 12 strncpy(pTmp, p, 255); 13 //delete pTmp; 14 } 15 16 int Function2(void) 17 { 18 char acString[] = "this is test!"; 19 Function1(acString); 20 21 return 1; 22 } 23 24 void Function3(void) 25 { 26 Function2(); 27 } 28 29 int main(void) 30 { 31 cout << "begin.............." << endl; 32 Function3(); 33 cout << "end................" << endl; 34 return 1; 35 }
标签:
原文地址:http://www.cnblogs.com/blueoverflow/p/4875866.html