GC 垃圾回收
大约 1 分钟
GC 垃圾回收
目录
C++的各种智能指针
shared_ptr和weak_ptr深入解析
参考:【博客园】shared_ptr和weak_ptr深入解析
shared_ptr
就叫它共享指针,它存在的意义是根据客户对象的强引用计数管理客户对象生存期,强引用计数为0了就删除客户对象
weak_ptr
弱指针存在的意义在于,在使用客户对象的时候,如果客户对象已经销毁了依然可以引用客户对象而不至于崩溃。弱引用指针在使用客户对象时需要转成shared_ptr,如果客户对象删除了,会提示失败 弱引用计数可以理解为_Ref_count这些计数对象的强引用,弱引用计数为0,就删除计数对象 析构的时候只减少弱引用计数,如果弱引用计数为0,就是删除计数对象。
弱引用拷贝构造和赋值,只对新客户对象的弱引用计数加1,并对旧客户对象的弱引用计数减1,最后做析构判断处理。
互相引用问题
弱智针就是辅助共享指针相互引用的
要用智能指针就要保证客户对象不再被普通指针操作,不然会引起混乱。
上面这些东西都是原理,原理都是相通的,boost里的也是这样,QT里的也是这样,Android里的也是这样。