【发布时间】:2013-12-31 01:33:23
【问题描述】:
我正在学习 boost 以适应代码库。
我阅读了 boost 中的 intrusive pointers 文档,并对它的工作原理有了一些了解。我有一个关于它是如何被销毁的问题。
假设我有一个指向对象 Foo A(使用 new 分配)的侵入式指针。现在,如果我创建另一个对象 Foo B(使用 new)并创建相同的侵入式指针来指向新创建的 Foo 对象 B。
为对象 Foo A 创建的内存是否在此过程中被销毁?
【问题讨论】:
-
boost::intrusive_ptr与std::shared_ptr相同。它会释放任何内存的唯一时间是引用计数达到 0 时。因此,除非引用计数为 0,否则使其指向另一个指针不会做任何事情。由于它们基本相同,我会说这会有所帮助:en.cppreference.com/w/cpp/memory/shared_ptr