【问题标题】:finding who creates object via smart pointer通过智能指针查找谁创建了对象
【发布时间】:2012-10-05 19:18:35
【问题描述】:

几天前我发布了有关智能指针内存泄漏的帖子。现在我能够找出哪些对象正在泄漏内存,但我无法确定它们从哪里泄漏内存。

我使用的代码与此处提到的相同 Detecting memory leak in reference counted objects

我已经阅读了很多 cmets,但没有一个能正确解释。我尝试使用宏 FILELINE ,它们都打印文件和 refmanager 类的行。

是否有调试此问题的好方法。请同时指出一些不错的示例。

【问题讨论】:

  • 您是说日志指示智能指针类本身的文件和行号?还是叫new的位置?
  • 日志表示智能指针类本身的行。知道如何解决这个问题。

标签: c++ memory-leaks smart-pointers


【解决方案1】:

在 Windows 上,您可以使用 Visual Studio 2015 中的新内存诊断工具:

【讨论】:

    【解决方案2】:

    最简单的方法可能是在 Windows 上使用 Valgrind(在 Linux 和 Mac 上)和一些类似的工具。

    您还可以在智能指针的构造函数中获取回溯(在 Linux 和 Mac 上使用函数 backtrace() 函数)或 Windows 上 dbghelp.dll 中的类似函数,然后将回溯保存在分配的某处并删除解除分配的回溯。然后在退出时打印所有剩余的回溯。

    【讨论】:

      猜你喜欢
      • 2021-05-18
      • 1970-01-01
      • 2012-09-10
      • 1970-01-01
      • 2013-08-19
      • 1970-01-01
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多