1. 程式人生 > >vld for memory leak detector (release version)

vld for memory leak detector (release version)

參考 源代碼 網絡 dllimport 怎麽辦 blank 使用 force block

有沒有這樣的情況,無法靜態的通過啟動和退出來查找內存泄露,比如網絡遊戲,你總不能直接關遊戲那玩家怎麽辦? 現在vld支持release,我們可以動態的找。

1.在release版本使用vld了。<PS1>

#define VLD_FORCE_ENABLE

#include <vld.h>

2.支持gm命令來開啟和關閉vld,並且report

__declspec(dllimport) void VLDDisable ();

__declspec(dllimport) void VLDEnable ();

__declspec(dllimport) UINT VLDReportLeaks ();

3. 修改一下vld.ini
VLD = off

ReportFile = .\memory_leak_report.txt

ReportTo = file

4. 運行release版,等啟動完畢穩定了

運行gm命令VLDEnable

如果在本機,就上線打一會下線

如果在服務器,就等個1分鐘

運行gm命令VLDReportLeaks

運行gm命令VLDDisable關閉

然後打開memory_leak_report.txt看

5. 如果太多了

修改vld.ini

AggregateDuplicates = yes

MaxDataDump = 32

MaxTraceFrames = 5

block id最小的地方看起,因為那是入口,最有可能是泄露的地方

6. vld網上的版本沒有對block id排序,所以找最小的id有難度,可以改下源代碼,參考我的方法。http://vld.codeplex.com/discussions/271640

VLD下載地址

http://vld.codeplex.com/releases

vld for memory leak detector (release version)