C++11中的unique_ptr、shared_ptr、weak_ptr

转载:

https://www.cnblogs.com/wangkeqin/p/9383658.html

https://www.cnblogs.com/wangkeqin/p/9351191.html

https://www.cnblogs.com/DswCnblog/p/5628314.html

 

C++11中的unique_ptr、shared_ptr、weak_ptr非常重要,但是你要完全掌握需要时间和一定的内功。所以我经常翻阅以上三篇文章。简洁有案例,非常好。

本想自己写文档,但是有这么好的文章,就不班门弄虎了。稍加整理,把常见使用函数贴出来。

 

 

一、C++内存管理之unique_ptr

 

 

二、C++内存管理之shared_ptr

 

 

三、C++ 11 创建和使用共享 weak_ptr

weak_ptr是为了配合shared_ptr而引入的一种智能指针,

它指向一个由shared_ptr管理的对象而不影响所指对象的生命周期,

也就是将一个weak_ptr绑定到一个shared_ptr不会改变shared_ptr的引用计数。

不论是否有weak_ptr指向,一旦最后一个指向对象的shared_ptr被销毁,对象就会被释放。

从这个角度看,weak_ptr更像是shared_ptr的一个助手而不是智能指针。

 

最重要的是搞清楚以下三句话:

std::shared_ptr<int> sPtr(new int(5));
std::weak_ptr<int> wPtr = sPtr;            //weak_ptr不会改变shared_ptr,但是会和shared_ptr的引用保持一致
std::shared_ptr<int> sPtr2 = wPtr.lock();  //wPtr.lock()后会改变shared_ptr的引用计数(+1)

 

posted on   orange-C  阅读(168)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示