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

Using CRT Library to find specific memory leaks

本文关键字:内存 泄漏 CRT 查找 使用      更新时间:2023-10-16

我正在阅读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函数调用之间发现的内存泄漏。但这并没有发生。还有别的办法吗?

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