智能指针shared_ptr与weak_ptr实现原理及区别探讨?

更新于
2026-10-10 14:38:05
0阅读来源:SEO资讯
  • 内容介绍
  • 相关推荐

本文共计2018个文字,预计阅读时间需要9分钟。

智能指针shared_ptr与weak_ptr实现原理及区别探讨?

目录 + 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实现原理及区别探讨?

目录 + 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)。

阅读全文