一、区别所有权:std::shared_ptr: 提供了共享所有权的概念,多个std::shared_ptr可以指向同一个对象,并且通过引用计数来跟踪有多个std::shared_ptr正在使用该对象,当最后一个std::shared_ptr被销毁或重置时,所指向的对也会被释放;std::weak_ptr不增加引用计数,因此他并不会控制对象的生命周期,他可以与std::shared_ptr共同作用
std::weak_ptr 避免shared_ptr内存泄漏的利器。 smart pointer 三兄弟性格各异。unque_ptr是独来独往,shared_ptr是左拥右抱,而weak_ptr生来就不是为了
原创
2022-08-20 00:00:27
106阅读
unique_ptr(定义在中)提供了一种严格的语义上的所有权拥有它所指向的对象无法进行复制构造,也无法进行复制赋值操作(译注
原创
2023-04-11 00:08:14
65阅读
理解weak_ptr 的2个关键点: 1. 认为它和一般指针没有区别。 2. 没有删
转载
2008-09-01 23:29:00
89阅读
2评论
std::weak_ptrIt must be converted to std::shared_ptr i
原创
2022-09-23 13:55:23
143阅读
shared_ptr与weak_ptr智能指针均是C++ RAII的一种应用,可用
转载
2019-11-29 10:31:00
169阅读
2评论
弱引用智能指针 std::weak_ptr 可以看做是 shared_ptr 的助手,它不管理 shared_ptr 内部的指针。std::weak_ptr 没有重载操作符 * 和 ->,因为它不共享指针,不能操作资源,所以它的构造不会增加引用计数,析构也不会减少引用计数,它的主要作用就是作为一个旁 ...
转载
2021-08-15 16:22:00
161阅读
2评论
1、weak_ptr (1)、weak_ptr是为了配合shared_ptr而引入的智能指针,它更像是shared_ptr的一个助手,它不具有普通指针的行为,没有重载operator*和->,它的最大作用在于协助shared_ptr工作,像旁观者那样观测资源的使用情况。 (2)、2个重要接口:bool expired()const ;// 判断是否过期 l
原创
2016-07-31 12:10:14
1152阅读
点赞
std::unique_ptr std::unique_ptr 是一种独占的语义,即只允许一个智能指针引用裸指针,这区别于 std::shared_ptr 允许多个 shared_ptr 引用同一个裸指针,它没有引用计数,它的性能比 shared_ptr 会...
转载
2020-07-17 09:53:00
171阅读
2评论
前面讨论了 std::weak_ptr , 这里说一下使用 weak_ptr 需要注意的地方:不正确地使用weak_ptr可能会导致奔溃。因为weak_ptr的lock()函数是noexcept的:所以如果不加判断就直接 解引用lock的返回值,可能会导致崩溃:.....
原创
2022-09-23 13:49:37
63阅读
文档: http://www.boost.org/doc/libs/1_57_0/libs/smart_ptr/shared_ptr.htm shared_ptr构造有个原型 Introduction The shared_ptr class template stores a pointer to
转载
2015-02-05 17:01:00
151阅读
2评论
shared_ptr weak_ptr是C++ tr1中最具有实用性的一个工具。利用C++的析构函数与引用计数,提供资源自动管理的能力。在vs2010之前,大家用的都是boost中的smartptr库,现在vs2010已经提供了tr1类库。
shared_ptr:
每一个shared_ptr对象内部,拥有两个指针ref_ptr与res_ptr,一个指向引用计数对象,一个指向实际的资源。
在s
原创
2011-03-20 22:36:24
3087阅读
如果说线程A执行Incref_nz时,获取Uses_的原子值是1,即cnt为1,资源存在,可以将weak_ptr提升成shared_ptr,于是进入while循环。如果
原创
2022-09-25 00:18:53
243阅读
转自:://blog.csdn.net/malong777/article/details/489
转载
2017-02-16 00:51:00
117阅读
2评论
weak_ptr是一种不控制对象生存周期的智能指针,它指向一个shared_ptr管理的对象...它不会改变shared_ptr的引用计数——《C++ Primer .5th》。很明显,weak_ptr的特点是“弱引用”。有什么用?应用场景是什么地方? 考虑它的胞兄shared_ptr,每次复制之后引用计数加一,不再指向对象(自身销毁或指向其他对象)时时引用计数减一,减至零
原创
2023-07-11 16:30:36
99阅读
循环引用:引用计数是一种便利的内存管理机制,但它有一个很大的缺点,那就是不能管理循环引用的对象。一个简单的例子如下:#include<string>#include<iostream>#include<boost/shared_ptr.hpp>#include<boost/weak_ptr.hpp>class parent;class childre
转载
精选
2014-01-20 21:15:50
649阅读
本次主要是补充一下智能指针章节的遗漏部分——weak_ptr指针 weak_ptr是C++11中引入的一种智能指针,它的作用就是配合shared_ptr对资源进行管理。由于weak_ptr设计的作用就是配合shared_ptr,因此其是一种“弱引用”,本身并不会增加所指对象的引用计数,也不会影响所指对象的生命周期。 &n
原创
2023-06-11 18:31:40
109阅读
循环引用:引用计数是一种便利的内存管理机制,但它有一个很大的缺点,那就是不能
转载
2022-11-04 09:49:33
77阅读
weak_ptr 介绍:weak_ptr 是一种不控制对象生命周期的智能指针, 它指向一个 shared_ptr 管理的对象. 进行该对象的内存管理的是那个强引用的 shared_ptr. weak_ptr只是提供了对管理对象的一个访问手段.weak_ptr 设计的目的是为配合 shared_ptr 而引入的一种智能指针来协助 shared_ptr 工作, 它只可以从一个 shared_ptr 或