C++ 通过智能指针查找创建对象的用户

C++ 通过智能指针查找创建对象的用户,c++,memory-leaks,smart-pointers,C++,Memory Leaks,Smart Pointers,几天前我发布了关于智能指针内存泄漏的帖子。现在我能够找出哪些对象正在泄漏内存,但我无法从它们泄漏内存的位置找到它 我使用的代码与这里提到的相同 我读过很多评论,但没有一篇能很好地解释。我尝试使用宏FILE和LINE,它们都打印refmanager类的文件和行 是否有一个很好的方法来调试这个问题。请指出一些很好的例子也 最简单的方法可能是在Linux和Mac上使用Valgrind和Windows上的类似工具 您还可以在智能指针的构造函数中从windows上的dbghelp.dll获取回溯(在Li

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

我使用的代码与这里提到的相同

我读过很多评论,但没有一篇能很好地解释。我尝试使用宏FILELINE,它们都打印refmanager类的文件和行


是否有一个很好的方法来调试这个问题。请指出一些很好的例子也

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


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

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


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

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


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


您是说日志指示智能指针类本身的文件和行?或者称为
new
?日志的位置指示智能指针类本身的行..知道如何解决此问题吗?您是说日志指示智能指针类本身的文件和行?或者调用
new
?日志的位置指示智能指针类本身的行。是否知道如何修复此问题。