与shared_ptr相比,更小的运行时数据结构和更快的代码可实现独特的_ptr
smaller runtime data structures and faster code for unique _ptr compared to shared_ptr
对于unique_ptr来说,删除器的类型是智能指针的一部分,但是与shared_ptr相比,这如何帮助编译器生成更小的运行时数据结构和更快的代码以获得独特的_ptr?
删除器不是这里所指的。
shared_ptr<>
需要为每个分配的对象分配(除其他事项外(两个额外的数字(强引用计数和弱引用计数(。
如果使用std::make_shared()
,它们将与对象本身一起存储,否则,需要为其单独分配。
此外,请记住,unique_ptr<>
可以利用空类优化来消除非有状态删除程序的任何开销。
至少,GCC似乎这样做了(至少在std::default_delete
(: https://godbolt.org/g/nbENL7
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 在Linux for Windows上编译C++代码时出错
- 我的字符计数代码计算错误.为什么
- 孤立代码块在结构中引发异常
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 此代码是否违反一个定义规则
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 为什么在这个代码结束循环中没有得到结束
- Python OpenCV将mat-ptr传递给c++代码
- 如何在不使代码庞大的情况下处理共享/弱ptr ?