天天看點

控制台和MFC中記憶體洩露工具vld的使用

   最近想檢測下項目中記憶體洩露的情況,選中了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、控制台:

    将資源下載下傳後,解壓到項目根目錄。

控制台和MFC中記憶體洩露工具vld的使用
控制台和MFC中記憶體洩露工具vld的使用

   據說在win7下,需要将dbghelp.dll放到debug目錄中。

   将dbghelp.dll放入debug目錄後,才能定位哪一行出錯。// 2014.05.09

   打開工程,在main所在的檔案添加代碼:#include "vld.h",隻要添加這個就足夠了。

   寫了一個func()函數測試:

控制台和MFC中記憶體洩露工具vld的使用
控制台和MFC中記憶體洩露工具vld的使用

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

控制台和MFC中記憶體洩露工具vld的使用
控制台和MFC中記憶體洩露工具vld的使用

  可以輕按兩下相應的行,确定出問題的地方。

   2、mfc

   這裡使用的是vs2012版,與vs2008幾乎一樣。

   1)首先建立一個mfc工程。

   2)假設在工程裡有一個include檔案夾專門放置頭檔案,lib檔案夾專門放置lib檔案。

控制台和MFC中記憶體洩露工具vld的使用

   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,退出

   可以看見記憶體洩露的地方,如同控制台:

控制台和MFC中記憶體洩露工具vld的使用

   6)編譯過程出錯

    可能在編譯過程中出錯,cannot open file 'libcd.lib'。

    解決方案:

    vs2008:linker --> input  --> ignore specific library: libcd

    vs2012: linker --> input  --> ignore specific default library: libcd

繼續閱讀