Visual Leak Detector簡稱VLD,我所下載的版本為1.9d,支援VC6, VC7(2003), VC8(2005),開源,可以根據源碼自行編譯, 64位機器下可以自己編譯位64位的使用,不過在我的機器下(64位CPU, 64位Windows7)沒有單獨編譯為74位也可以使用。
VLD只針對程式的Debug版本有效,對Release版本無效,因此在發布版本中可以不管該代碼的引入,因為不會有任何作用,可放心使用。
:http://www.codeproject.com/Articles/9815/Visual-Leak-Detector-Enhanced-Memory-Leak-Detectio;
使用方法:
以VS2005為例,工具---選項---項目和解決方案---VC++目錄:①包含檔案:添加目錄,為安裝目錄下的include檔案夾,並將該條目錄移動到列表的最後一條 ②庫檔案:添加目錄,為安裝目錄下的lib檔案夾,同樣移動到最後一條。 ③然後在將要使用該工具的一個或多個C/C++源檔案中添加標頭檔#include "vld.h"即可,需要注意的是:該標頭檔要放在所有先行編譯標頭檔之後,比如stdafx.h等,也可以放入該先行編譯標頭檔stdafx.h,而在源檔案中引入該先行編譯標頭檔即可,該vld.h可以在多個源檔案或普通標頭檔中引入,比如在a.h和b.h中都引入vld.h,有多個源檔案引入了a.h和b.h,那麼在進程中只有一份vld.h的代碼,而不會有副作用(僅對1.9d版本,其他版本不詳)。
另:在安裝目錄下的vld.ini下的參數意義以及包括但不限於本文中提到的內容在安裝目錄下的readme中都有詳細說明。
VLD還提供了幾個簡單的API來給使用者使用,如下:
void VLDDisable (void); //使記憶體流失檢測失效
void VLDEnable(void); // 使記憶體流失檢測有效
eg.
在output視窗中的內容:
關於其他VS版本的支援:在VS2010的增益集管理器中搜尋visual leak detector,可以搜到到該外掛程式,該外掛程式的說明是for VS2008/2010/2012,因此,如果使用這些版本的VS可以用這種方式嘗試。