【问题标题】:Using CRT Library to find specific memory leaks使用 CRT 库查找特定的内存泄漏
【发布时间】:2013-05-21 09:04:23
【问题描述】:

我正在关注使用 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 函数调用之间发现的内存泄漏。但它没有发生。有没有其他方法可以做到这一点?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-16
      • 1970-01-01
      • 1970-01-01
      • 2017-11-29
      • 1970-01-01
      • 1970-01-01
      • 2013-11-06
      • 1970-01-01
      相关资源
      最近更新 更多