在boost文档中make_shared http://www.boost.org/doc/libs/1_47_0/libs/smart_ptr/make_shared.html, 它说:
除了方便和风格之外,这样的功能还具有异常安全性和显着性
更快,因为它可以使用对象及其对应的单一分配
控制块,消除了shared_ptr构造开销的很大一部分。
我不明白“单一分配”的含义,什么意思?
“分配”是指通过调用分配器获得的内存块。
通常,创建一个shared_ptr
使用指针构造函数为“控制块”分配内存,其中保存引用计数和删除器。那个的副本shared_ptr
全部引用相同的控制块,以便它们共享引用计数。因此总共有两个分配——对象本身和由shared_ptr
.
如果您创建该对象并且shared_ptr
和...一起make_shared
,那么只进行一次分配。您可以将其视为具有两个成员的单个结构:
- 正在管理的对象
- 控制块。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)