- 浏览: 721034 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1043)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (52)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (64)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
最新评论
unique_ptr(定义在中)提供了一种严格的语义上的所有权
拥有它所指向的对象
无法进行复制构造,也无法进行复制赋值操作(译注:也就是对其无法进行复制,我们无法得到指向同一个对象的两个unique_ptr),但是可以进行移动构造和移动赋值操作
保存指向某个对象的指针,当它本身被删除释放的时候(例如,离开某个作用域),会使用给定的删除器(deleter)删除释放它指向的对象,
unique_ptr的使用能够包括:
为动态申请的内存提供异常安全
将动态申请内存的所有权传递给某个函数
从某个函数返回动态申请内存的所有权
在容器中保存指针
“所有auto_ptr应该已经具有的(但是我们无法在C++98中实现的)功能”
拥有它所指向的对象
无法进行复制构造,也无法进行复制赋值操作(译注:也就是对其无法进行复制,我们无法得到指向同一个对象的两个unique_ptr),但是可以进行移动构造和移动赋值操作
保存指向某个对象的指针,当它本身被删除释放的时候(例如,离开某个作用域),会使用给定的删除器(deleter)删除释放它指向的对象,
unique_ptr的使用能够包括:
为动态申请的内存提供异常安全
将动态申请内存的所有权传递给某个函数
从某个函数返回动态申请内存的所有权
在容器中保存指针
“所有auto_ptr应该已经具有的(但是我们无法在C++98中实现的)功能”
#include <iostream> #include <memory> #include <string> using namespace std; unique_ptr<int> fun() { unique_ptr<int> p(new int(1)); return p; } int main() { unique_ptr<string> p2(new string("aaa")); cout << *p2.get() << endl; unique_ptr<int> p3(fun()); cout << *p3.get() << endl; //unique_ptr<string> p4(p2); //error } aaa 1
发表评论
-
条件变量
2018-12-03 13:43 412#include <iostream> #i ... -
std::function
2018-08-12 19:23 420#include <iostream> #i ... -
emplace_back
2018-08-02 07:40 516https://blog.csdn.net/xiaolewen ... -
输出类名
2014-02-20 21:51 543#include <iostream> us ... -
c++11应该使用的特性
2013-07-27 11:09 727http://blog.jobbole.com/44015/ -
random(new)
2013-07-21 12:00 758#include<iostream> #in ... -
tuple(new)
2013-07-15 22:11 556#include <tuple> #incl ... -
qtcreator c++11
2013-07-15 22:10 855在.pro里面:QMAKE_CXXFLAGS += -std= ... -
shared_ptr(new)
2013-04-11 23:59 754#include <memory> #inc ... -
c++ lambda
2013-03-24 11:26 937#include <iostream> #i ... -
定长容器
2013-03-02 12:17 736#include<iostream> #in ... -
数组(new)
2012-10-30 22:00 613#include <iostream> us ... -
vector(new)
2012-10-21 15:05 757#include<iostream> #in ... -
auto(new)
2012-10-20 14:28 602#include<iostream> #in ... -
const
2012-10-08 23:57 1116#include<iostream> usi ... -
变量命名
2012-10-05 09:33 664#include<iostream> usi ... -
声明与定义
2012-10-04 11:33 661extern int i;//声明但未定义 int j;//声 ... -
初始化(new)
2012-10-04 11:16 1155#include<iostream> usi ... -
数字类型
2012-10-02 11:46 572我怕我翻译的不够专业,有些地方就用原文了,反正我是看懂了! 我 ... -
gcc4.7.2安装
2012-09-24 17:44 11161gcc4.7.2编译方法: 推荐第一种 1.简化版: htt ...
相关推荐
C++ 智能指针(shared_ptr/weak_ptr)源码 源码位置:gcc-6.1.0\gcc-6.1.0\libstdc++-v3\include\tr1 这里只单列shared_ptr.h文件用于分析
如题,我们今天要讲的是 C++11 引入的三种智能指针中的:weak_ptr。 在学习 weak_ptr 之前最好对 shared_ptr 有所了解。如果你还不知道 shared_ptr 是何物,可以看看另一篇文章: 【C++11新特性】 C++11智能指针之...
四种智能指针的使用、机制和缺陷分析
主要介绍了C++11新特性之智能指针,包括shared_ptr, unique_ptr和weak_ptr的基本使用,感兴趣的小伙伴们可以参考一下
scoped_ptrboost::scoped_ptr和std::auto_ptr非常类似,是一个简单的智能指针,它能够保证在离开作用域后对象被自动释放。下列代码演示了该指针的基本应用: 代码如下:#include <string>#include <iostream>#...
关于C++智能指针 weak_ptr (弱引用 智能指针) 和 shared_ptr (强引用 智能指针)的源文件。 资源分不能设为0了。。
在新标准中,主要提供了shared_ptr、unique_ptr、weak_ptr三种不同类型的智能指针。 接下来的几篇文章,我们就来总结一下这些智能指针的使用。 今天,我们先来看看shared_ptr智能指针。 shared_ptr 智能指针 shared_...
在前面一篇文章中,我们了解了 C++11 中引入的智能指针之一 shared_ptr 和 weak_ptr ,今天,我们来介绍一下另一种智能指针 unique_ptr 。 往期文章参考: 【C++11新特性】 C++11 智能指针之shared_ptr 【C++11新...
如果⼀块内存被shared_ptr和weak_ptr同时引⽤,当所有shared_ptr析构了之 后,不管还 有没有weak_ptr引⽤该内存,内存也会被释放。所以weak_ptr不保证它指向的内存⼀定是 有效的,在使⽤之前使⽤函数lock()检查weak_...
rcu_ptr通过包装std::shared_ptr实现读取复制更新机制(在某种程度上,它与std::weak_ptr有一些相似之处)。 atomic_shared_ptr rcu_ptr依赖于std::shared_ptr的自由函数重载。 使用 会很好,但目前仍处于实验阶段。...
C++ 11中最常用的智能指针类型为shared_ptr,它采用引用计数的方法,记录当前内存资源被多少个智能指针引用。该引用计数的内存在堆上分配。当新增一个时引用计数加1,当过期时引用计数减一。只有引用计数为0时,智能...
为了在结构复杂的情境中执⾏上述⼯作,标准库提供了weak_ptr、bad_weak_ptr和 enable_shared_from_this等辅助类。 2. Class unique_ptr实现独占式拥有(exclusive ownership)或严格拥有(strict ownership)概念,...
标准库还定义了⼀种名为weak_ptr的伴随类,它是⼀种弱引⽤,指向shared_ptr所管理的对象,这三种智能指针都定义在memory头⽂件 中。 2、auto_ptr (不要使⽤的指针) (1)内部⼤概实现:做成⼀个auto_ptr类,包含...
C++智能指针循环引⽤问题分析 C++11中引⼊了三种智能指针,分别是shared_ptr、weak_ptr和unique_ptr 智能指针的作⽤ 智能指针可以帮助我们管理动态分配的堆内存,减少内存泄漏的可能性 ⼿动管理堆内存有引起内存泄漏...
C++11提供了三种智能指针:std::shared_ptr, std::unique_ptr, std::weak_ptr,使⽤时需添加头⽂件。 shared_ptr使⽤引⽤计数,每⼀个shared_ptr的拷贝都指向相同的内存。每使⽤他⼀次,内部的引⽤计数加1,每析构...
C++ 标准库有四种智能指针:auto_ptr,unique_ptr,shared_ptr,weak_ptr(auto_ptr 是 C++98 标准的,其余都是 C++11 标准推出的,auto_ptr 现在已经不再使⽤了),C++11 这三种智能指针都是类模板。 ⼆ ⼆. ...
⼆、智能指针类型 ⼆、智能指针类型 智能指针在C++11版本之后提供,包含在头⽂件中,标准命名std空间下,有auto_ptr、shared_ptr、weak_ptr、unique_ptr四 种,其中auto_ptr已被弃⽤。 :拥有严格对象所有权语义的...