标签: boost-intrusive

增强侵入式指针

我对Boost的侵入式指针有些困惑。定义说:

“每个新intrusive_ptr实例都通过对函数使用不合格的调用来增加引用计数intrusive_ptr_add_ref,将指针作为参数传递给它。同样,当intrusive_ptr销毁an时 ,它会调用intrusive_ptr_release;该函数负责在引用计数降至零时销毁对象。希望用户为这两个功能提供合适的定义。”

这是否意味着我必须实现这些方法,或者我可以做到?关键是,我们正在使用它,因为函数需要一个侵入式指针。我们在其他地方使用了共享指针,因此只担心该指针是否受管理,并且在没有更多引用时将被删除。

c++ boost pointers shared-ptr boost-intrusive

7
推荐指数
1
解决办法
2532
查看次数

如何从boost :: intrusive集合容器中分离元素

我试图从boost :: intrusive集中分离元素并获得断言失败.当我从容器中分离后删除元素时.

该类派生自set_base_hook.

class fileXfer:public set_base_hook> 70 {

我正在使用"擦除"功能将对象从容器中分离出来.当我尝试删除对象时,我得到断言失败.断言失败发生在下面的位置.

/usr/local/include/boost/intrusive/detail/utilities.hpp:344:void boost :: intrusive :: detail :: destructor_impl(Hook&,boost :: intrusive :: detail :: link_dispatch <(boost :: intrusive: :link_mode_type)1u>)[with Hook = boost :: intrusive :: detail :: generic_hook,boost :: intrusive :: default_tag,(boost :: intrusive :: link_mode_type)1u,3>]:断言`!hook.is_linked ()'失败了.中止(核心倾倒)

当我看到错误的位置时,我看到了这个命令.

341 {//如果这个断言引发,你可能已经销毁了一个对象342 //,当它仍然插入一个活着的容器中时.343 //如果是这样,请在销毁之前从容器中删除该对象.344(无效)钩; BOOST_INTRUSIVE_SAFE_HOOK_DESTRUCTOR_ASSERT(hook.is_linked()!); 345}

请指教

boost boost-intrusive

4
推荐指数
1
解决办法
923
查看次数

标签 统计

boost ×2

boost-intrusive ×2

c++ ×1

pointers ×1

shared-ptr ×1