在研究引用计数智能指针的一些实现时,我发现了这种类型的实现。
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/