Aar*_*kan 33 c++ boost smart-pointers shared-ptr c++11
C++ 11有相同的东西boost::intrusive_ptr吗?
我的问题是我的C++代码有一个C风格的界面.接口的两端都可以使用C++,但出于兼容性原因需要公开C接口.我无法使用,std::shared_ptr因为我必须通过两个(或更多)智能指针来管理对象.我无法找到类似的解决方案boost::intrusive_ptr.
Jon*_*ely 41
c ++ 11是否有类似boost :: intrusive_ptr的东西?
没有.
它确实有std::make_shared这意味着std::shared_ptr几乎(参见下面的注释)一样有效侵入式智能指针,这是因为参考计数将被存储在相邻存储器对象本身,提高的参考和高速缓存使用局部性.它还提供了std::enable_shared_from_this允许您std::shared_ptr在只有一个指向a拥有的对象的内置指针时检索的情况shared_ptr,但是不允许您使用不同的智能指针类型来管理对象.
shared_ptr期望完全负责管理对象.一个不同的智能指针类型可能只管理"强"引用计数而不是"弱"引用计数,这将允许计数不同步并打破不变量shared_ptr.
注意:使用make_shared允许shared_ptr将几乎为侵入指针有效.当使用时,对象和引用计数信息可以分配在单个内存块中make_shared,但是仍然会有两个引用计数(对于"强"和"弱"计数),这不是侵入式指针的情况.他们不支持weak_ptr.此外,shared_ptr对象本身总是必须存储两个指针(将返回的shared_ptr::get()指针和指向包含引用计数的"控制块"的另一个指针,并且知道拥有对象的动态类型)因此具有比侵入式指针.
| 归档时间: |
|
| 查看次数: |
18782 次 |
| 最近记录: |