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 2021-01-07 11:22  orange-C  阅读(147)  评论(0编辑  收藏  举报

导航