ato*_*omd 9 c++ boost smart-pointers shared-ptr make-shared
在make_shared的boost文档中,它说:
除了方便和风格之外,这样的函数也是异常安全且相当快的,因为它可以对对象及其相应的控制块使用单个分配,从而消除了shared_ptr的构造开销的很大一部分.
我不明白"单一分配"的含义,这是什么意思?
Ste*_*sop 12
"分配"表示从对分配器的调用获得的存储器块.
通常,shared_ptr使用指针构造函数创建一个为"控制块"分配内存,该控制块保存引用计数和删除器.shared_ptr所有副本都指向相同的控制块,以便它们共享引用计数.因此总共有两个分配 - 对象本身和由其创建的控制块shared_ptr.
如果你创建对象和shared_ptr一起make_shared,那么只有一个已做出分配.您可以将其视为具有两个成员的单个结构: