使用CRT库查找特定的内存泄漏

时间:2013-05-21 09:04:24

标签: c++ visual-studio memory-leaks crt

我正在关注使用CRT查找内存泄漏的msdn文章。

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函数调用之间找到的内存泄漏。但它没有发生。还有其他办法吗?

1 个答案:

答案 0 :(得分:3)

_CrtDumpMemoryLeaks()只能在程序结束时使用。您正在寻找的是_CrtMemCheckpoint(),在函数的开头调用它来拍摄快照。并在函数末尾使用_CrtMemDumpAllObjectsSince()来查看自快照以来未分配的内容。小心,当你把它做成细粒度时,它们可能不一定是泄漏。