【问题标题】:C++: How does boost intrusive pointer get destroyed?C ++:boost侵入式指针如何被破坏?
【发布时间】:2013-12-31 01:33:23
【问题描述】:

我正在学习 boost 以适应代码库。

我阅读了 boost 中的 intrusive pointers 文档,并对它的工作原理有了一些了解。我有一个关于它是如何被销毁的问题。

假设我有一个指向对象 Foo A(使用 new 分配)的侵入式指针。现在,如果我创建另一个对象 Foo B(使用 new)并创建相同的侵入式指针来指向新创建的 Foo 对象 B。

为对象 Foo A 创建的内存是否在此过程中被销毁?

【问题讨论】:

  • boost::intrusive_ptrstd::shared_ptr 相同。它会释放任何内存的唯一时间是引用计数达到 0 时。因此,除非引用计数为 0,否则使其指向另一个指针不会做任何事情。由于它们基本相同,我会说这会有所帮助:en.cppreference.com/w/cpp/memory/shared_ptr

标签: c++ boost


【解决方案1】:

是的,只要它是最后一个引用,它就可以。它与 shared_ptr 的不同之处在于它利用了外部提供的引用计数函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    • 2017-06-29
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    相关资源
    最近更新 更多