C++中shared_ptr与weak_ptr的实现原理及相互关系如何构成一个高效且自洽的智能指针机制?
- 内容介绍
- 相关推荐
本文共计2020个文字,预计阅读时间需要9分钟。
目录 + shared_ptr + weak_ptr + 内存模型 + RefCnt 和 Mdel 实现 + 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)。
本文共计2020个文字,预计阅读时间需要9分钟。
目录 + shared_ptr + weak_ptr + 内存模型 + RefCnt 和 Mdel 实现 + 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)。

