2011-02-01 53 views

回答

2

你可以#include <crtdbg.h>

在你的程序開始輸入以下代碼:

_CrtSetDbgFlag(_CRTDBG_ALLOC_MEMDF | _CRT_LEAK_CHECK_DF); 

或在程序結束時,你返回退出代碼之前:

_CrtDumpMemoryLeaks(); 

第一種方式更好,因爲它會在程序退出時自動顯示內存泄漏,並且它只是一行代碼。如果您使用_CrtDumpMemoryLeaks(),則不得不將其放置在程序可能會退出的任何位置。

程序退出時,輸出窗口中將顯示任何內存泄漏。這隻適用於視覺工作室。

我不認爲這會顯示分配發生的地方的文件和行號。在C++中,你可以,如果你重新定義new關鍵字顯示在分配發生了:

#ifdef _DEBUG 
#define new new(_NORMAL_BLOCK, __FILE__, __LINE__) 
#endif 
+0

它確實顯示malloc的分配文件和行號(所以在C中)。 – noelicus 2011-11-16 14:12:52

0

我不是專家,程序員,但我用英特爾Parallel Studio檢查內存泄漏。它非常不可思議,無縫集成到視覺工作室中,並提供極其簡單的控制來檢測程序中的各種錯誤。幾乎只是安裝並運行它開始發現內存錯誤。

唯一的問題是價格標籤,雖然有30天的試用期。

0

對於在Visual Studio中工作已經開發和可靠的插件。至於我,我喜歡deleaker,它很容易使用。

1

我使用Visual Leak Detector。它是免費且非常有效的,你只需要在你的程序中包含頭文件<vld.h>
它給出已分配和未釋放的內存的完整堆棧跟蹤。