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

 

一.        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工具進行檢測。

相關文章
相關標籤/搜索