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該工具易於使用。