一. VLD工具概述linux
Visual Leak Detector(VLD)是一款用於Visual C++的免費的內存泄露檢測工具。他的特色有:能夠獲得內存泄漏點的調用堆棧,若是能夠的話,還能夠獲得其所在文件及行號; 能夠獲得泄露內存的完整數據; 能夠設置內存泄露報告的級別;而且是開源免費的。ios
二. VLD下載api
http://www.codeproject.com/tools/visualleakdetector.asp函數
本文後附有vld1.0的工具包,下載解包後就可以使用。工具
三. VLD安裝測試
方法一:this
解壓以後獲得vld.h, vldapi.h, vld.lib, vldmt.lib, vldmtdll.lib, dbghelp.dll等文件。將.h文件拷貝到Visual C++的默認include目錄下,將.lib文件拷貝到Visual C++的默認lib目錄下,將dbghelp.dll拷貝到你的程序的運行目錄下,便安裝完成了spa
方法二:debug
解壓以後獲得vld.h, vldapi.h, vld.lib, vldmt.lib, vldmtdll.lib, dbghelp.dll等文件。將.h文件和.lib文件拷貝到你要檢測的工程文件所在的目錄裏(只針對此工程),將dbghelp.dll拷貝到你的程序的運行目錄下。就完成安裝了。code
四. VLD使用
在包含入口函數的.cpp文件中包含vld.h就能夠了。下面以一個例子進行說明(源程序見附錄):
1. 加入頭文件:
2. 編譯:
3. 在debug方式下運行:查看VC的輸出信息:
內存泄露所在的位置 |
4.查看VC輸出信息:
"WARNING: Visual Leak Detector detected meory leaks!"
5. 若是沒有內存泄露,此輸出的信息爲:
"No memory leaks detected"
五. 附錄
1.測試用文件
#include "vld.h"
#include "iostream.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
void Function1(char *p)
{
char *pTmp = new char[255];
memset(pTmp, 0x0, 255);
strncpy(pTmp, p, 255);
//delete pTmp;
}
int Function2(void)
{
char acString[] = "this is test!";
Function1(acString);
return 1;
}
void Function3(void)
{
Function2();
}
int main(void)
{
cout << "begin.............." << endl;
Function3();
cout << "end................" << endl;
return 1;
}
2.Vld1.0工具包
3.關於linux的內存泄露,可使用valgrind工具進行檢測。