一、引用计数
shared_ptr维护着一个引用计数,引用计数以下情况将会递增:
- 指针构造(
std::shared_ptr pa(new A);
) - 拷贝构造(
std::shared_ptr pa=std::make_shared(args)
等情况 ) - 赋值运算(
pb=pa;
)
以下情况递减:
- 给定新值(
pa=make_shared(new A);
) - 离开作用域
- 主动销毁(
release() 放弃控制权 reset 放弃并释放
)
可以使用use_count()方法查看当前资源有多少个潜在的shared_ptr,unique()当引用计数为1时为true,反之则为false。
二、循环引用问题shared_ptr
出现循环引用的根本原因在于引用计数失效,导致其管理的空间无法释放。
举个简单的例子,class A
定义了一个指向自身类类型的智能指针m_spA
。
class A
{
public:
A(int i);
~A() { cout
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?