1 _Ptr_base
_Ptr_base 是智能指针的基类,它包含两个成员变量: 指向目标元素的指针 _Ptr 和 引用计数基类指针 _Rep。
_Ptr 指向的元素类型为 using element_type = remove_extent_t
_Ref_count_base 是 引用计数基类,它包含两个成员变量: 原子计数器 _Uses 和 弱引用计数 _Weaks。
_MT_INCR 和 _MT_DECR 是宏定义,实现原子操作。
define _MT_INCR(x) _InterlockedIncrement(reinterpret_cast
define _MT_DECR(x) _InterlockedDecrement(reinterpret_cast
当 _Uses 为 0 时,调用 _Destroy() 释放对象;当 _Weaks 为 0 时,调用 _Delete_this() 释放 _Ref_count_base。此外就是一些引用计数的增加、减少等函数的实现。
Original: https://www.cnblogs.com/zyb993963526/p/15986051.html
Author: Kayden_Cheung
Title: C++源码—_Ptr_base(MSVC 2017)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/535548/
转载文章受原作者版权保护。转载请注明原作者出处!