查找boost :: shared_ptr循环引用

Zac*_*Zac 9 c++ boost memory-leaks shared-ptr

有没有找到shared_ptr的循环引用的提示/技巧?

这是我想要找到的例子 - 不幸的是我似乎无法在我的代码中找到循环.

struct A
{
  boost::shared_ptr<C> anC;
};

struct B
{
  boost::shared_ptr<A> anA;
};

struct C
{
  boost::shared_ptr<B> anB;
};
Run Code Online (Sandbox Code Playgroud)

R S*_*hko 5

我推荐使用Valgrind.关闭进程时,它会显示所有泄漏的内存.除非你的关闭以某种方式打破循环,否则任何循环都应该显示为泄漏的内存,Valgrind会告诉你代码中最初分配内存的位置.


Zac*_*Zac 1

我结合使用了上述帖子。我使用了内存分析器,提出了一些可疑的循环,并使用weak_ptr 打破了这些循环。

我之前使用过内置的 CRT 内存泄漏检测,但不幸的是,在我的例子中,有几个静态单例在模块卸载之前不会被释放,我认为这是在 CRT 检测器生命周期之后。基本上它会产生大量误报。