智能指针shared_ptr与weak_ptr实现原理及区别探讨?
- 内容介绍
- 相关推荐
本文共计2018个文字,预计阅读时间需要9分钟。
目录 + shared_ptr + weak_ptr + 内存模型 + RefCnt 和 Model 实现shared_ptr + 实现weak_ptr + 实现shared_from_this() + 循环引用 + shared_ptr 获取引用计数表示一块内存被多个智能指针共享,当引用计数为0时,会自动释放。
目录
- shared_ptr
- weak_ptr
- 内存模型
- RefCnt 和 Mdel实现
- shared_ptr 实现
- weak_ptr 实现
- shared_from_this()
- 循环引用
shared_ptr
采取引用计数来表示一块内存被几个智能指针所共享,当引用计数为0时,会自动释放该内存,避免了忘记手动释放造成的内存泄露问题。采用引用计数来管理内存对象的做法是Linux内核惯用的手法。
weak_ptr
weak_ptr 设计的目的是为配合 shared_ptr 而引入的一种智能指针来协助 shared_ptr 工作, 它只可以从一个 shared_ptr 或另一个 weak_ptr 对象构造, 它的构造和析构不会引起引用记数的增加或减少。同时weak_ptr 没有重载*和->,但可以使用 lock 获得一个可用的 shared_ptr 对象(引用计数会增加1)。
本文共计2018个文字,预计阅读时间需要9分钟。
目录 + shared_ptr + weak_ptr + 内存模型 + RefCnt 和 Model 实现shared_ptr + 实现weak_ptr + 实现shared_from_this() + 循环引用 + shared_ptr 获取引用计数表示一块内存被多个智能指针共享,当引用计数为0时,会自动释放。
目录
- shared_ptr
- weak_ptr
- 内存模型
- RefCnt 和 Mdel实现
- shared_ptr 实现
- weak_ptr 实现
- shared_from_this()
- 循环引用
shared_ptr
采取引用计数来表示一块内存被几个智能指针所共享,当引用计数为0时,会自动释放该内存,避免了忘记手动释放造成的内存泄露问题。采用引用计数来管理内存对象的做法是Linux内核惯用的手法。
weak_ptr
weak_ptr 设计的目的是为配合 shared_ptr 而引入的一种智能指针来协助 shared_ptr 工作, 它只可以从一个 shared_ptr 或另一个 weak_ptr 对象构造, 它的构造和析构不会引起引用记数的增加或减少。同时weak_ptr 没有重载*和->,但可以使用 lock 获得一个可用的 shared_ptr 对象(引用计数会增加1)。

