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

fhn*_*eer 1 c++ memory-leaks crt visual-studio

我正在关注使用 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.
}
Run Code Online (Sandbox Code Playgroud)

我在该方法的入口和出口处添加了断点。我认为第二个 DumpMemory 函数将仅显示在这两个 DumpMemory 函数调用之间发现的内存泄漏。但这并没有发生。还有其他方法可以做到这一点吗?

Han*_*ant 5

_CrtDumpMemoryLeaks() 只能在程序结束时使用。您正在寻找的是 _CrtMemCheckpoint(),在函数开始时调用它来拍摄快照。并在函数末尾使用 _CrtMemDumpAllObjectsSince() 来查看自快照以来已分配但未释放的内容。请注意,当您将其设置得如此细粒度时,它们可能不一定是泄漏。