寫程式難免會遇到記憶體洩漏, 那是個大條且又會讓人頭痛的問題, 所幸的是現在有一些工具可以使用, 如 Dev Partner Studio, GlowCode...等等, 不過這些大都是商業軟體居多, 而 Visual C++ 本身也是有偵測記憶體洩漏的函式可以使用, 但是使用起來比較繁鎖, 現在有一個 OpenSource 的專案叫 Visual Leak Detector, 可以很容易的解決這個問題.
下面將簡單的介紹 Visual Leak Detector :
<安裝及環境設定>
- 先至 官網 下載檔案, 解壓縮後並安裝檔案.
- 設定檔, 從 [開始] > [程式集] > [Visual Leak Detector] > [Confifure], 然後會開啟一個 vld.ini.
下面列出 vld.ini 比較會需要使用到的參數, 詳細的說明可以在說明檔中找到,
- ReportEncoding : 若回報資訊輸出至檔案, 檔案內文所使用的編碼方式, ascii, unicode.
- ReportFile : 若回報資訊輸出至檔案, 輸出的檔案名稱.
- ReportTo : 回報資訊輸出至何處, debugger 為 Visual Studio 除錯視窗, file 為檔案, both 為兩者都輸出.
- StartDisabled : 載入時先關閉記憶體洩漏偵測, 有需要時再自行開啟.
使用 Windows7 時可能因為權限因素無法儲存 vld.ini, 請先將檔案複製到別處, 改完之後再複製到原目錄下.
3. 設定目錄, [工具] > [選項] > [專案和方案] > [VC++ 目錄], 在 [Include 檔案] 設置安裝目錄的 Include 目錄, 在 [程式庫檔] 設置安裝目錄的 Lib 目錄
<專案及原始碼>
- 若沒有 precompiled header 的話, 在每個檔案前都必須 include "vld.h", 若有 precompiled header, 如 stdafx.h, 則只要在最前面 include "vld.h" 即可, 不需每個檔案都有.
- 專案設定中, 設定 link vld.lib.
<其它>
- vld 只在 Debug 模式才有效用.
- 在原始碼中可以任意呼叫 VLDEnable() 或 VLDDisable() 開始或關閉 vld 的功能.