【发布时间】:2016-04-07 13:02:10
【问题描述】:
除了生成代码的大小之外,使用reset() 在函数make_shared() 上初始化共享指针有什么区别?
案例1使用reset()
boost::shared_ptr<A> pA;
pA.reset(new A());
案例2使用make_shared()
boost::shared_ptr<A> pA;
pA = boost::make_shared<A>();
一般来说,使用reset 而不是make_shared 来减小可执行文件的大小是一个好习惯吗?
【问题讨论】:
-
make_shared效率更高。使用它。 -
@KerrekSB,这取决于您如何衡量效率,
make_shared分配更少并减少堆占用,但通常会增加代码大小,这有其自身的成本。 Template Code Bloat Revisited: A Smaller make_shared 读起来很有趣。 -
@KerrekSB “更高效”是什么意思?如果我比较生成的代码量,重置更小。
-
@lucab0ni,但如果计算对
malloc的调用次数,或者从malloc请求的总大小,那么make_shared会更小。 -
@JonathanWakely:感谢您的链接!
标签: c++ boost shared-ptr