【发布时间】:2013-10-14 11:12:48
【问题描述】:
根据我所做的研究,听起来std::make_shared 是构造std::shared_ptr 的首选方式。具体是因为:
- 与使用至少执行两次的
new相比,它只执行一次内存分配。 - 如果传递给 make_shared throws 的 ctor 不会泄漏,就像使用 new 时一样。
我的问题是,假设我想要一个 shared_ptr,我应该始终使用make_shared,还是在某些情况下首选new?
【问题讨论】:
-
shared_ptr<int>(new int)不会在shared_ptr构造函数抛出时泄漏内存;这就是你的第二点对我的暗示。
标签: c++ memory-management c++11 shared-ptr smart-pointers