2013-05-21 25 views
1

我正在關注使用CRT查找內存泄漏的msdn文章。使用CRT庫來查找特定內存泄漏

http://msdn.microsoft.com/en-us/library/x98tx3cf%28v=vs.100%29.aspx

我加入_CrtDumpMemoryLeaks();到我的應用程序的退出點。它顯示了我在不同文件中的數千次內存泄漏。但我有興趣找到特定文件/類/函數的內存泄漏。有沒有什麼可能的方法來實現這一點。

這是我試圖做的。

void SomeClass::SomeRandomFunction(SomeRandomParameters) 
{ 
    _CrtDumpMemoryLeaks();     // Start of function. 
    // Some lines of codes which may contain memory leaks. 

    _CrtDumpMemoryLeaks();     // End of function. 
} 

我在這個方法的入口和出口處添加了斷點。我認爲第二個DumpMemory函數將只顯示在這兩個DumpMemory函數調用之間找到的內存泄漏。但沒有發生。有沒有其他方法可以做到這一點?

回答

3

_CrtDumpMemoryLeaks()應該只能在程序結束時使用。你正在尋找的是_CrtMemCheckpoint(),在函數的開始處調用它來拍攝快照。並且在函數的末尾使用_CrtMemDumpAllObjectsSince()來查看快照後分配的內容,但未發佈。要小心,當它變得細緻時,它們可能不一定會泄漏。

+0

我在找同樣的東西。它運行良好。 –