对于unique_ptr,删除器的类型是智能指针的一部分,但与shared_ptr相比,它如何帮助编译器生成较小的运行时数据结构和更快的独特_ptr代码?
答案 0 :(得分:1)
删除者不是这里提到的。
shared_ptr<>
需要为每个分配的对象(强和弱引用计数)分配(除其他外)两个附加数字。
如果使用std::make_shared()
,它们将与对象本身一起存储,否则,需要为其单独分配。
此外,请记住unique_ptr<>
可以使用空类优化来消除非有状态删除者的任何开销。
gcc,至少似乎是这样做的(至少std::default_delete
):
https://godbolt.org/g/nbENL7