vld for memory leak detector (release version)
有沒有這樣的情況,無法靜態的通過啟動和退出來查找內存泄露,比如網絡遊戲,你總不能直接關遊戲那玩家怎麽辦? 現在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)