C++智能指针shared_ptr底层结构体有哪些成员?分别有什么用?
时间: 2023-03-23 17:01:22 浏览: 230
C++智能指针-unique-ptr智能指针详解.pdf
shared_ptr是一种智能指针,用于管理动态分配的对象的生命周期。其底层结构体中主要包含以下几个成员:
1.指向所管理对象的指针成员,即"__ptr",用于存储所管理对象的地址。
2.指向所共享的引用计数的指针成员,即"__cntrl",用于存储引用计数的信息,同时也会存储一些其他信息,比如指向所使用的删除器等等。
3.存储所管理对象的类型信息的指针成员,即"type_info",用于在运行时进行类型检查。
其中,引用计数是shared_ptr最核心的部分,其主要作用是记录当前共有多少个shared_ptr对象指向同一个所管理的对象,以此来判断何时可以安全的销毁该对象。因为每次创建shared_ptr对象时,都会将引用计数加1,而每次销毁shared_ptr对象时,都会将引用计数减1,当引用计数为0时,说明没有任何shared_ptr对象指向该对象,此时可以安全地销毁该对象。
阅读全文