IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++11花落知多少 -> 正文阅读

[C++知识库]C++11花落知多少

(一)讲一下右值引用

https://blog.csdn.net/chenxiyuehh/article/details/93665922

(二)lambda

(三)智能指针

auto_ptr(已被弃用)、shared_ptr、weak_ptr、unique_ptr

【1】为什么要使用智能指针

智能指针的作用是管理一个指针,因为存在以下这种情况,申请的空间在函数结束时忘记释放,造成内存泄漏,使智能指针可以很大程度上的避免这个问题;因为智能指针就是一个类,当超出了类的作用域,类会自动调用析构函数,析构函数会自动释放资源;

?智能指针主要用于管理在堆上分配的内存,它将普通的指针封装为一个栈对象。 当栈对象的生存周期结束后,会在析构函数中释放掉申请的内存, 从而防止内存泄漏。

auto_ptr:

1)已弃用,auto_ptr存在内存崩溃的问题,因为采用的是对象所有权模式,用auto_ptr进行资源转移,不能共享对象的所有权;

2)被赋值或者拷贝后,失去对原指针的管理;

3)不能管理数组指针,因为auto_ptr的内部实现中,析构函数中删除对象使用的是delete而不是delete[], 释放内存时仅释放了数组的第一个元素的空间,会造成内存泄漏;

4)不能作为容器对象,因为STL容器中的元素经常要支持拷贝、赋值等操作;

unique_ptr:

1)是auto_ptr的优化版本,严格意义上的独享所有权,采用了对象所有权模式,保证同一时间只能有一个智能指针指向该对象;

2)拷贝构造和赋值运算符被禁,不能进行拷贝构造和赋值运算;

share_ptr:

1)shared_ptr:多个指针可以共享相同对象,该对象及资源会在最后一个引用被销毁时释放

2)但是如果有两个shared_ptr相互引用,那么这两个引用计数永远不为0,资源不被释放;

weak_ptr:

1)weak_ptr:解决shared_ptr相互引用时,产生死锁的问题,计数永远降不到0,没办法进行资源释放,造成内存泄漏问题。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-03 11:43:10  更:2021-09-03 11:45:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:56:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码