【问题标题】:How to determine which dynamically loaded library causes memory leak如何确定哪个动态加载的库导致内存泄漏
【发布时间】:2016-07-29 14:05:16
【问题描述】:

我正在使用 Visual Studio 2013 (C++) 并遇到一些内存泄漏。 由于我正在处理多个 dll,我想知道是否可以查看哪个 dll 分配了多少内存。

【问题讨论】:

  • MSVC 不提供分析工具吗?甚至QtCreator 也会这样做。
  • 内存是一种进程资源,它不被模块“拥有”。大多数内存泄漏诊断实用程序都尝试捕获分配的堆栈跟踪以帮助程序员修复原因,这应该很明显。 Windows 上的 Umhd.exe。

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


【解决方案1】:

Visual Studio 2015 具有出色的分析工具(比 Visual Studio 2013 更好),因此如果可以,请切换到该工具,否则 Process Explorer 可以满足您的需求。要查看堆大小,请检查View -> Show Lower Pane 并检查View -> Lower Pane View -> DLLs,然后当您单击一个进程时,下部窗格将显示所有已加载的 DLL。然后您可以在下部窗格列标题上使用Select Columns 来显示私有字节。示例截图:

【讨论】:

    【解决方案2】:

    尝试使用 _CrtDumpMemoryLeaks()

    虽然它只适用于调试版本

    【讨论】:

      【解决方案3】:

      我最喜欢的内存分配分析工具之一是 MemTrack: http://www.almostinfinite.com/memtrack.html

      它非常易于设置和使用,并提供每个类分配的内存/块的详细细分。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-14
        • 2014-02-19
        • 2018-09-08
        • 1970-01-01
        • 1970-01-01
        • 2021-09-02
        • 2023-04-09
        相关资源
        最近更新 更多