Visual Leak Detector
內(nèi)存泄漏一直是一個(gè)令人頭疼的問(wèn)題,Visual Leak Detector工具在處理內(nèi)存泄漏時(shí)非常好用,官網(wǎng)可以直接點(diǎn)擊這里,簡(jiǎn)單介紹一下Visual Leak Detector。
Visual Leak Detector是一個(gè)開(kāi)源的,免費(fèi)的,健壯的又使用起來(lái)很簡(jiǎn)單的內(nèi)存泄漏檢測(cè)系統(tǒng),支持vs2008-vs2015,支持C和C++的工程。
使用起來(lái)只需要簡(jiǎn)單的在工程中加入:
#include <vld.h>
下載與配置
現(xiàn)在的最新版是2.5.1,下載完成之后直接一鍵安裝,安裝的時(shí)候會(huì)提示是否要配置vs,勾選的話,安裝過(guò)程會(huì)直接配置好vs和path環(huán)境變量:

x64也配置了對(duì)應(yīng)的路徑。
打開(kāi)安裝路徑下的vld.ini文件,將ReportTo設(shè)置為both,為了在非bebug下也能看到檢測(cè)結(jié)果,注意文件的寫(xiě)入權(quán)限,不然不可以寫(xiě)入。
測(cè)試程序
我們寫(xiě)一段會(huì)發(fā)生內(nèi)存泄漏的代碼:
#include<vld.h>
#include<stdlib.h>
#include<stdio.h>
char* f()
{
char *p = new char;
return p;
}
int main()
{
for(int i =0;i<100;i++)
char *pBuf = f();
return 0;
}
但是這段代碼在vs2015里面會(huì)報(bào)錯(cuò),這是因?yàn)長(zhǎng)eak Detector需要#include "stdafx.h" ,但是我們并不需要預(yù)編譯頭文件,所以要在“屬性→C/C++→預(yù)編譯頭→預(yù)編譯頭”中刪除stdafx.h,注釋#include "stdafx.h" ,代碼就可以正常運(yùn)行了。
結(jié)果分析
運(yùn)行程序后,會(huì)在控制臺(tái)上顯示:
并在工程路徑下生成一個(gè)“memory_leak_report.txt”文件,打開(kāi)之后可以看到:
他在提示我們cpp文件的line 8和line 15出現(xiàn)了內(nèi)存泄漏情況,至此Visual Leak Detector就安裝成功了。
|