我几天前发布了有关智能指针的内存泄漏的信息。现在,我可以找出哪些对象正在泄漏内存,但是我无法从它们泄漏内存的位置弄清楚。
我正在使用与此处提到的相同的代码
Detecting memory leak in reference counted objects
我读了很多评论,但没有一个能正确解释。我尝试使用 FILE 和 LINE 宏,它们都打印文件和refmanager类行。
有没有一种调试此问题的好方法。请也指向一些不错的示例。
最佳答案
最简单的方法可能是使用Valgrind(在Linux和Mac上)和Windows上的一些类似工具。
您还可以在智能指针的构造函数中进行回溯(在Linux和Mac上使用backtrace()函数)或Windows上dbghelp.dll的类似函数,然后将回溯保存在分配时的某个位置,并删除在释放。然后在退出时打印所有剩余的回溯轨迹。
关于c++ - 通过智能指针查找谁创建对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12902021/