我正在关注使用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函数调用之间找到的内存泄漏。但它没有发生。还有其他办法吗?
答案 0 :(得分:3)
_CrtDumpMemoryLeaks()只能在程序结束时使用。您正在寻找的是_CrtMemCheckpoint(),在函数的开头调用它来拍摄快照。并在函数末尾使用_CrtMemDumpAllObjectsSince()来查看自快照以来未分配的内容。小心,当你把它做成细粒度时,它们可能不一定是泄漏。