2012-05-24 21 views
1

說,我現在使用可視泄漏檢測器(VLD)來檢查我們的服務應用程序中的內存泄漏。而且,由於大量的內存分配發生在靜態對象,所以我會想,能VLD排除那些誤報內存泄漏(它不應該被看作是真正的內存泄漏)可視檢漏儀是否可以排除假陽性內存泄漏?

非常感謝

回答

2

經過一番調查後,我發現這個VLD不能排除那些誤報內存泄漏(如靜態對象中的新增內容),因爲它也在其vld.dll中使用全局靜態對象,並且它的dtor會報告可能的內存泄漏。由於無法確保它們的析構函數序列,因此無法使用VLD檢測靜態對象中的內存泄漏。

但是,我也找到了一個旁路解決方案,因爲您可以修改此工具的源代碼,您可以使用atexit在您的ctor中註冊reportMemoryLeak函數,以確保在dtor之後調用此方法。

而且坦率地說,這真的不是那麼直接,所以看到這樣一個 http://cfc.kizzx2.com/index.php/detecting-memory-leaks-with-windbg-the-modern-and-free-way/ ,使用WinDbg + DebugCRT堆是好的!