引用计数智能指针如何避免或处理引用计数器溢出?
How do reference-counting smart pointer's avoid or handle reference-counter overflows?
在朴素的引用计数智能指针实现中,引用计数器可能会溢出。如何在C++标准库实现中避免或处理这种溢出?
来自 stdlibc++ 标头的代码片段:
typedef int _Atomic_word;
class _Sp_counted_base
/*snip*/
_Atomic_word _M_use_count;
/*snip*/
_M_weak_add_ref()
{ __gnu_cxx::__atomic_add_dispatch(&_M_weak_count, 1); }
/*snip*/
__atomic_add_dispatch(/*snip*/)
{
/*snip*/
__atomic_add_single(/*snip*/);
/*snip*/
}
__atomic_add_single(/*snip*/)
{ *__mem += __val; }
结论:此特定实现通过忽略可能性来"处理"引用计数器溢出。
相关文章:
- 处理类内的回调时,必须调用对非静态成员函数的引用
- std::remove() 按预期处理文字,但不能与取消引用的迭代器一起工作
- 当使用CreateObject从VBScript引用DLL时C++如何处理DLL版本?
- 引用计数智能指针如何避免或处理引用计数器溢出?
- 在闭包中,如何通过存储在内存中的指针或引用类型捕获可变性或用现代函数式语言进行处理?
- 如何在类中进行 c++ 多线程处理(将线程引用保留为成员 var)
- C++处理取消引用语法的泛型类
- 处理受向 std::vector 添加元素影响的引用
- 转发引用是否可以使用别名模板进行别名处理
- 未定义的引用C++队列模板处理字符串
- 对boost asio完成处理程序的rvalue引用
- 有没有一种方法可以使用引用而不是指针来处理相互包含数据的类
- 我正在处理一个 c++ 项目,但在通过引用传递 rect0 对象时遇到问题
- CPP 中的字符串引用处理
- 处理对“vector_binary_operation”类中“表达式”的引用,而无需不必要的副本
- C# 与C++通过引用处理传递
- 处理文件中的数据引用/指针
- C++异常处理通过引用传递:抛出的地址与捕获的地址不同
- 编译器构造:处理对无序符号的引用
- 内核崩溃-无法处理000002c0处的内核NULL指针取消引用