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

Cla*_*res 5 c++ boost design-patterns smart-pointers loki

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

Luc*_*ore 9

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

智能指针用于模拟动态分配的自动存储对象.智能指针本身是自动管理的.因此,当一个被销毁时,它存储在自动存储器中的任何东西也会被破坏.但是你不想失去参考计数器.因此,您将其存储在动态存储中.