Virtual Leak Detector 工具的使用 --- VC開發內存泄漏檢測工具

Virtual Leak Detector 使用方法

 

Virtual Leak Detector,內存泄漏檢測工具,開源,易用。僅支持VC平臺,如VS系列,VC6.0。

 

使用方法

1.      下載並安裝vdl(名稱爲:vld-2.4rc2-setup.exe),下載地址:http://vld.codeplex.com/releases

2.      打開需要檢測的項目,進行配置(參考文檔:http://vld.codeplex.com/wikipage?title=Using%20Visual%20Leak%20Detector&referringTitle=Documentation)。如下(只針對VS2010及以上版本):

1)   VS中,View->Property Manager(視圖--屬性管理器), 選擇 Microsoft.Cpp.Win32.user,右鍵打開工程屬性。

2)  將vld安裝目錄下的“include”目錄包含至頭文件目錄。


3)  將vld安裝目錄下的“lib\Win32”或“lib\Win64”目錄包含至鏈接目錄。根據項目若要,這兩個目錄可只包含一個,也可全部包含。


     注:經過上述3個步驟設置後,以後新建的工程中,會自動包含這些目錄。

 

3.      在任一C/C++文件中,加入#include "vld.h"該語句需要在預編譯頭文件的後面,也可以直接放入預編譯頭文件中(放置在所有include語句的後面),如下:


 

經上述4個步驟的配置,重編程序執行,即可檢測出程序的內存泄漏情況,並能標示出源碼行,及泄露地址中所存儲的數據。

 

注意:路徑中不能含有中文字符,否則會導致無法定位內存泄漏的代碼行等。

 

 

測試實例

 

1.      新建工程Win32控制檯工程testMemLeak,源碼如下:

 

testMemLeak.cpp

// testMemLeak.cpp : 定義控制檯應用程序的入口點。

#include "stdafx.h"

#include <iostream>

using namespace std;

void test1()
{
    char* p = new char[100];
    sprintf(p, "%s", "abcdefghi");
    p = NULL;
}

void test2()
{
    int* p = new int(128);
}

int _tmain(int argc, _TCHAR* argv[])
{
    test2();
    test1();

	return 0;
}


 

2. 修改預編譯頭文件stdafx.h,加入 include “vld.h”,如下:

Afxstd.h

// stdafx.h : 標準系統包含文件的包含文件,
// 或是經常使用但不常更改的
// 特定於項目的包含文件

#pragma once

#include "targetver.h"

#include <stdio.h>
#include <tchar.h>

// TODO: 在此處引用程序需要的其他頭文件
#include "vld.h"    // virtual leak detector header file

 

3. 編譯並運行程序。輸出窗口中內存泄漏信息及分析如下:


  

通過上面的簡單描述及示例,可知Visual Leak Detector該工具易於使用。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章