通过智能指针查找谁创建对象

时间:2012-10-15 18:46:23

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

我几天前发布了关于内存泄漏的智能指针。现在我能够找出哪些对象正在泄漏内存,但我无法弄清楚它们泄漏内存的位置。

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

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

有没有一个很好的方法来调试这个问题。请指出一些不错的例子。

2 个答案:

答案 0 :(得分:1)

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

你也可以在智能指针的构造函数中进行回溯(在Linux和Mac上使用函数backtrace()函数)或者在windows上使用dbghelp.dll中的类似函数,然后在分配时保存回溯并删除解除分配的回溯。然后在退出时打印所有剩余的回溯。

答案 1 :(得分:0)

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