Visual C++內存泄露檢測—VLD工具使用說明

http://www.cnblogs.com/lidabo/archive/2012/07/19/2599745.html


Visual C++內存泄露檢測VLD工具使用說明

一.        VLD工具概述

Visual Leak DetectorVLD)是一款用於Visual C++的免費的內存泄露檢測工具。他的特點有:可以得到內存泄漏點的調用堆棧,如果可以的話,還可以得到其所在文件及行號; 可以得到泄露內存的完整數據; 可以設置內存泄露報告的級別;並且是開源免費的。

 

二.        VLD下載

http://www.codeproject.com/tools/visualleakdetector.asp

本文後附有vld1.0的工具包,下載解包後就可使用。

 

三.        VLD安裝

方法一:

解壓之後得到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拷貝到你的程序的運行目錄下。就完成安裝了。

 

四.        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(pTmpp, 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;

}

 

2Vld1.0工具包

 

 

3.關於linux的內存泄露,可以使用valgrind工具進行檢測。


發佈了61 篇原創文章 · 獲贊 60 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章