跳至主要內容

GC 垃圾回收

LincZero大约 1 分钟

GC 垃圾回收

目录

C++的各种智能指针

shared_ptr和weak_ptr深入解析

参考:【博客园】shared_ptr和weak_ptr深入解析open in new window

shared_ptr

就叫它共享指针,它存在的意义是根据客户对象的强引用计数管理客户对象生存期,强引用计数为0了就删除客户对象

weak_ptr

弱指针存在的意义在于,在使用客户对象的时候,如果客户对象已经销毁了依然可以引用客户对象而不至于崩溃。弱引用指针在使用客户对象时需要转成shared_ptr,如果客户对象删除了,会提示失败 弱引用计数可以理解为_Ref_count这些计数对象的强引用,弱引用计数为0,就删除计数对象 析构的时候只减少弱引用计数,如果弱引用计数为0,就是删除计数对象。

弱引用拷贝构造和赋值,只对新客户对象的弱引用计数加1,并对旧客户对象的弱引用计数减1,最后做析构判断处理。

互相引用问题

弱智针就是辅助共享指针相互引用的

要用智能指针就要保证客户对象不再被普通指针操作,不然会引起混乱。

上面这些东西都是原理,原理都是相通的,boost里的也是这样,QT里的也是这样,Android里的也是这样。