c++ - 具有引用计数的共享智能指针实现

标签 c++ smart-pointers

在研究引用计数智能指针的一些实现时,我发现了这种类型的实现。

template<typename Type> 
class SmartRefCountPointer{
    Type* obj;
    size_t* count;  // <<--- Why pointer/ why is count on heap
}

你能解释一下为什么这个计数器被移到堆上而不是栈上吗?如果您能提供任何失败案例,我将不胜感激。

最佳答案

计数器必须与指向同一对象的 SmartRefCountPointer 的其他实例共享。

引用计数指针的全部要点是有一个地方跟踪有多少引用。因此,这个单一位置必须是一个全局变量,或堆上的一个位置。您显示的实现已选择用于以后。

关于c++ - 具有引用计数的共享智能指针实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31030457/

相关文章:

c++ - 屏幕/玻璃 splinter 效果

c++ - BSTR 和 _bstr_t 有什么区别?

c++ - QList 中的 boost::shared_ptr 导致段错误

c++ - 操作动态内存,重载一个const成员函数有意义吗?

c++ - 智能指针和 dynamic_cast

c++ - 模板数组长度作为参数

c++ - 加入vector所有线程后程序不稳定不退出

c++ - Armadillo 和 C++ - 使用二维数组进行矩阵初始化

c++ - 包含充当标识符的类的类的容器结构

c++ - 抛出析构函数导致内存泄漏