【发布时间】:2011-01-09 23:52:48
【问题描述】:
使用make_shared<T>() 代替shared_ptr<T>(new T) 有什么缺点吗?
收到了多次来自 用户的工厂功能, 创建给定类型的对象并 返回一个 shared_ptr 给它。除了 方便和风格,这样的功能 也是异常安全的 相当快,因为它可以使用 一个单一的分配为 对象及其对应的控件 块,消除显着 shared_ptr 构造的一部分 高架。这消除了其中一个 主要效率投诉 shared_ptr.
【问题讨论】:
-
有人可能想知道,关于 shared_ptr 的其他主要效率问题是什么?
-
异常安全是
std::make_shared的一个非常强大的资产。尽可能尝试使用它。 -
@ViktorSehr Mutex 在主要复制
shared_ptr时锁定引用计数器:) -
@Drax:啊,所以它们是线程安全的?不知道
-
@Drax 不要介意问号顺便说一句,我可以 google :)
标签: c++ boost shared-ptr