std::shared_ptr是C++11标准库中定义的智能指针,与其他智能指针(如std::unique_ptr和std::weak_ptr)相比有以下区别: 所有权共享:std::shared_ptr可以共享所有权,多个std::shared_ptr可以指向同一个对象,当最后一个指向对象的std::shared_ptr被销毁时,对象才会被释放。而std::unique_ptr拥有唯一所有权,不能被...
该指针是用来指向被管理对象的。通过shared_ptr对象对资源进行访问就是通过该指针成员变量进行实现的。这里...
是为了配合shared_ptr而引入的一种智能指针,没有重载operator*和->,它的最大作用在于协助shared_ptr工作,像旁观者那样观测资源的使用情况。 weak_ptr可以从一个shared_ptr或者另一个weak_ptr对象构造,获得资源的观测权。但weak_ptr没有共享资源,它的构造不会引起指针引用计数的增加。 成员函数expired()的功能等价于...
深入理解C++智能指针之unique_ptr——传说中的只移型别(move-only type) 1501 6 26:01 App 万能引用、引用折叠、forward傻傻弄不明白?要点:理解推导规则! 9131 6 21:58 App 【C++】一个视频彻底掌握const 1.4万 3 10:21 App 【C++】Lambda表达式的本质 3650 3 10:07 App 现代C++的单例模式 1312 6...
智能指针的行为类似常规指针,重要的叙别是它负责自动释放所指向的对象。标准库提供两种智能指针,区别在于管理底层指针的方法不同,shared_ptr允许多个指针指向同一个对象,unipue_ptr则独占所指向的对象。标准库还定义了一种名为weak_ptr的伴随类,他是一种弱引用,指向...
unique_ptr指针本身的生命周期:从unique_ptr指针创建时开始,直到离开作用域。离开作用域时,若其指向对象,则将其所指对象销毁(默认使用delete操作符,用户可指定其他操作)。 unique_ptr指针与其所指对象的关系:在智能指针生命周期内,可以改变智能指针所指对象,如创建智能指针时通过构造函数指定、通过reset方法重新指定、通...
2. shared_ptr:当多个指针需要共享同一个对象时,使用shared_ptr是合适的。它通过引用计数来管理对象的...
从名字上看shared_ptr是共享指针,意味着我们可以复制shared_ptr,复制出的智能指针指向同一个内部数据指针(即被智能指针包装的真正数据)。 构造shared_ptr 有多种方法可以构造shared_ptr,下面代码中有4种构造方式: int *p = new int(1); shared_ptr<int> sp1(p);// 通过普通指针p构造shared_ptr ...
智能指针shared_ptr 是存储动态创建对象的指针,其主要功能是管理动态创建对象的销毁,从而帮助彻底消除内存泄漏和悬空指针的问题。 二shared_ptr的原理和特点 基本原理:就是记录对象被引用的次数,当引用次数为 0 的时候,也就是最后一个指向该对象的共享指针析构的时候,共享指针的析构函数就把指向的内存区域释放掉。