在某个地方,我看到一篇关于创建boost shared_ptr的优化方法的帖子,以便它同时分配ptr管道和指针。我做了SO搜索但是在shared_ptr上有很多的帖子,我找不到它。有人聪明,请重新发布
编辑: 谢谢你的回答。额外的信用问题。什么是正确的(首选的?)习惯用于返回null shared_ptr?即
FooPtr Func()
{
if(some_bad_thing)
return xxx; // null
}
给我
return FooPtr((Foo*)0);
看起来有点笨拙
答案 0 :(得分:6)
除了方便和风格之外,这样的函数也是异常安全且相当快的,因为它可以对对象及其相应的控制块使用单个分配,从而消除了shared_ptr的构造开销的很大一部分。这消除了关于shared_ptr的主要效率投诉之一。