最近想檢測下項目中記憶體洩露的情況,選中了vld這款。在查找使用方法的時候,大都是控制台下的示例,添加到main函數所在的源檔案上。換成mfc就糾結了,不知道添加到哪裡去。本文記錄控制台和mfc中的使用vld過程。
vld資源:
1)、大家可以移步下邊的網址下載下傳:
http://vld.codeplex.com/releases/view/82311
2)、也可以到我的資源中下載下傳:
http://download.csdn.net/detail/alex_my/6238977
本文使用的是我的資源中的vld1.0版本,vs2008。
1、控制台:
将資源下載下傳後,解壓到項目根目錄。

據說在win7下,需要将dbghelp.dll放到debug目錄中。
将dbghelp.dll放入debug目錄後,才能定位哪一行出錯。// 2014.05.09
打開工程,在main所在的檔案添加代碼:#include "vld.h",隻要添加這個就足夠了。
寫了一個func()函數測試:

當整個過程運作完畢之後,結果:

可以輕按兩下相應的行,确定出問題的地方。
2、mfc
這裡使用的是vs2012版,與vs2008幾乎一樣。
1)首先建立一個mfc工程。
2)假設在工程裡有一個include檔案夾專門放置頭檔案,lib檔案夾專門放置lib檔案。
3)将解壓出的vld中的vld.h,vldapi.h放入include檔案夾中。vld.lib,vldmt.lib,vldmtdll.lib放入到lib檔案夾中。
4)進行必要設定:
c/c++ --> general --> additional include directories : include
linker --> general --> additional library directories: lib
linker --> input --> additional dependencies: vld.lib,vldmt.lib,vldmtdll.lib
5)添加vld.h頭檔案
在控制台下是放在main函數所在的源檔案中,而在mfc下,則放在theapp初始化的源檔案中。
如果找不到的,可以全文搜尋:theapp。
添加好vld.h頭檔案後,可以寫一個測試函數,如上的func函數。
f5運作,在output視窗可以看見:
visual leak detector version 1.0 installed (single-threaded static).
shift + f5,退出
可以看見記憶體洩露的地方,如同控制台:
6)編譯過程出錯
可能在編譯過程中出錯,cannot open file 'libcd.lib'。
解決方案:
vs2008:linker --> input --> ignore specific library: libcd
vs2012: linker --> input --> ignore specific default library: libcd