c++ - 为什么 C++ 智能指针实现将引用计数器与指针一起保存在堆上?

标签 c++ design-patterns boost smart-pointers loki

阅读 Alexandrescu 和 wikipipidia 我看到指针和引用计数器存储在堆上。然后提到引用计数效率低下,因为必须在堆上分配计数器?为什么不存储在堆栈中?

最佳答案

因为一旦智能指针的当前实例超出范围,您就会丢失它。

智能指针用于模拟动态分配的自动存储对象。智能指针本身是自动管理的。因此,当一个人被摧毁时,它存储在自动存储中的任何东西也会被摧毁。但是您不想丢失引用计数器。所以你将它存储在动态存储中。

关于c++ - 为什么 C++ 智能指针实现将引用计数器与指针一起保存在堆上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9283230/

相关文章:

java - C++的out参数对象创建和JNA

c++ - 高效地创建大量需要访问 "global"对象的小型 C++ 对象

c++ - 如何使用 bjam 构建 boost 示例?

C++ - 按自定义数据类型 vector 的值删除元素

c++ - 将 Hexdump 转换为 c 中的字符串

C++11线程等待

WPF MVVM : View information in the model

java - 规则引擎根据多个条件过滤多个输入对象

c++ - 在使用 boost 的多线程 c++ 程序中,有没有办法获取指向当前线程的指针?

c++ - 使用 c++11 编译 boost 1.55