![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
智能指针
文章平均质量分 74
丿安桥
知不可乎骤得,托遗响于悲风
展开
-
智能指针第三篇——weak_ptr
目录1.模拟实现加了weak_ptr后的shared_ptr:1.1代码模拟简单实现:1.2内存分布如图:2.拷贝构造和赋值语句3.解决shared_ptr的相互引用:前边说过可以通过使用weak_ptr来解决shared_ptr的相互引用问题。本篇我们会从weak_ptr的构成和内纯分布来深入了解如何解决的。weak_ptr一般都会和shared_ptr一起使用。weak_ptr的结构只有一个变量_Rep,较为简单,所以我们来看两者结合的shared_ptr。1.2内存分布如图: 此时的原创 2022-07-10 23:21:39 · 541 阅读 · 0 评论 -
智能指针——2(unique_ptr唯一性智能指针和shared_ptr共享性智能指针)
在unique_ptr里因为其所有权的唯一性,拷贝构造和赋值语句会被删除。但是可以进行移动构造和移动赋值。 还要注意的一点是在调用函数时,因为传参时调用拷贝构造函数,可能传参出现错误。unique_ptr提供两个模板,一个针对一个对象,一个针对一组对象。shared_ptr多出一个结构引用计数,用于计算该对象被多少指针对象拥有。可用use_cout计算。内存分布:拷贝构造和赋值语句都是指向同一块RefCnt,并使其引用计数+1.这里边最难的应该就是移动赋值。在移动赋值时,先确定取出自赋值。如果this原创 2022-07-07 18:18:57 · 474 阅读 · 0 评论 -
智能指针第一篇——auto_ptr
目录1.RAll:1.1原理:1.2为什么使用智能指针,不使用裸指针:2.c++17已经移除的auto_ptr:2.1智能指针的内存分布: 2.2如何解决->和*来调用成员方法(运算符重载)2.3reset()函数:2.4auto_ptr的缺点:使用局部对象来管理资源的技术称为资源获取即初始化;这里的资源主要是指操作系统中有限的东西如内存,网络套接字,网络套接字,互斥量,文件句柄等等,局部对象是指存储在栈的对象,它的生命周期是由操作系统来管理的,无需人工介入。 但是资源的销毁往往是程序员经常忘记的一个环节,原创 2022-07-06 22:31:01 · 696 阅读 · 0 评论