【发布时间】:2014-04-29 13:18:58
【问题描述】:
std::make_unique 是否有像 std::make_shared 这样的效率优势?
相比手动构造std::unique_ptr:
std::make_unique<int>(1); // vs
std::unique_ptr<int>(new int(1));
【问题讨论】:
-
make_shared是否比仅编写长手写代码更有效率? -
@EdHeal 可以,因为
make_shared可以在一次分配中同时为对象和控制块分配空间。这样做的代价是对象不能与控制块分开释放,所以如果你经常使用weak_ptr,那么你最终可能会使用更多的内存。 -
也许这是一个很好的起点stackoverflow.com/questions/9302296/…
-
详细解释见此链接:herbsutter.com/gotw/_102
标签: c++ c++11 c++14 smart-pointers unique-ptr