我几天前发布了关于内存泄漏的智能指针。现在我能够找出哪些对象正在泄漏内存,但我无法弄清楚它们泄漏内存的位置。
我使用的是与此处提到的相同的代码 Detecting memory leak in reference counted objects
我已阅读了很多评论,但没有一个正确解释。我尝试使用宏 FILE 和 LINE ,它们都打印文件和refmanager类的行。
有没有一个很好的方法来调试这个问题。请指出一些不错的例子。
答案 0 :(得分:1)
最简单的方法可能是使用Valgrind(在Linux和Mac上)和Windows上的一些类似工具。
你也可以在智能指针的构造函数中进行回溯(在Linux和Mac上使用函数backtrace()函数)或者在windows上使用dbghelp.dll中的类似函数,然后在分配时保存回溯并删除解除分配的回溯。然后在退出时打印所有剩余的回溯。
答案 1 :(得分:0)
在Windows上,您可以使用Visual Studio 2015中的新内存诊断工具: