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)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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)