智能指针可以智能地知道它是不是最后一个指向对象的指针,并且据此可以实现由对象的最后一个指针来决定对象的销毁。

C++11提供两种智能指针(定义在<memory>):

  • 1、shared_ptr可以用来实现共享所有权的概念。多个智能指针可以引用同一个对象,当最后一个智能指针销毁时,对象销毁。为了使智能指针能适用于更复杂的情景,weak_ptr,bad_weak_ptr和enable_shared_from_this。
  • 2、unique_ptr可用用来实现互斥所有权的概念,在一段时间内,只有一个智能指针可以指向对象。当然,这种所有权是可以转移的。这种智能指针可以有效地避免资源泄漏,比如忘记调用delete来释放堆对象。

(1) 智能指针主要的用途就是方便资源的管理,自动释放没有指针引用的资源

(2) 使用引用计数来标识是否有多余指针指向该资源。

未完待续

C++11 make_shared(智能指针初始化)相关推荐

  1. C++新特性探究(18.1):C++11 shared_ptr智能指针

      在实际的 C++ 开发中,我们经常会遇到诸如程序运行中突然崩溃.程序运行所用内存越来越多最终不得不重启等问题,这些问题往往都是内存资源管理不当造成的.比如:   有些内存资源已经被释放,但指向它的 ...

  2. C++新特性探究(18.3):C++11 weak_ptr智能指针

    C++11 weak_ptr智能指针 1.weak_ptr指针的创建 2.weak_ptr模板类提供的成员方法 例2: 程序执行结果为: 2 1 10

  3. C++新特性探究(18.2):C++11 unique_ptr智能指针详解

    C++11 unique_ptr智能指针   作为智能指针的一种,unique_ptr 指针自然也具备"在适当时机自动释放堆内存空间"的能力.和shared_ptr指针最大的不同之 ...

  4. c++11中智能指针的原理,使用,实现

    文章目录 理解智能指针的原理 智能指针的使用 shared_ptr的使用 unique_ptr的使用 weak_ptr的使用 循环引用 指针指针的设计和实现: 理解智能指针的原理 c++程序设计中使用 ...

  5. c++11之智能指针

    目录 一,什么是智能指针 二,共享的智能指针shared_ptr 1. shared_ptr的初始化 3. 指定删除器 三,独占的智能指针unique_ptr 1. 初始化 2. 删除器 四, 弱引用 ...

  6. [C++11]共享智能指针shared_ptr指定删除器

    当智能指针管理的内存对应的引用计数变为 0 的时候,这块内存就会被智能指针析构掉了.另外,我们在初始化智能指针的时候也可以自己指定删除动作,这个删除操作对应的函数被称之为删除器,这个删除器函数本质是一 ...

  7. 『C++11』智能指针 匠心之作

    优缺点: 智能指针由原始指针的封装,优点是可以自动分配内存,不用担心内存泄漏问题. 用于解决独占/共享所有权指针的释放,传输等问题. 但是没有原始指针方便. 目录 一. unique_ptr 独占指针 ...

  8. 智能指针初始化(pcl库)

    智能指针在用的时候一定要初始化,要不然运行的时候会出错(可以正常编译).下面以pcl库做一个简单的说明. 在函数里面进行初始化: pcl::PointCloud<pcl::PointXYZ> ...

  9. C++11 unique_ptr智能指针详解

    文章目录 0.应用场景 1.初始化方式 2.常用操作 3.例子 例子1 创建unique_ptr并以引用形式传递给函数 例子2 用vector管理unique_ptr 例子3 unique_ptr作为 ...

最新文章

  1. python local函数_python中的函数
  2. ixf文件 mysql导入,控制 PC/IXF 文件导入数据库的一般规则
  3. HihoCoder - 1175 拓扑排序·二
  4. [Android ] linux命令英文缩写的含义(方便记忆)
  5. Android系列之Fragment(三)----Fragment和Activity之间的通信(含接口回调)
  6. Lenovo ThinkPad T系列解决 VMware Workstation 打开虚拟机提示:Intel VT-x处于禁用状态问题
  7. 如何在 Linux 终端中一次运行多个 Linux 命令(初学者教程)
  8. chown: 无效的用户: hadoop-3.1.4_Ubuntu 21.04 用户主目录权限将14年来首次变更及新功能预览...
  9. 软件测试面试题(编程算法题)
  10. QT5+VS201: QTCharts:设置坐标轴间隔以及标注
  11. altium designer(AD13)隐藏敷铜的方法
  12. 关于Chrome沙箱技术(沙盒技术)
  13. 回顾百度企业竞争情报系统
  14. html平面图绘制,小白福利!超详细平面图绘制
  15. [转载]洛谷日报索引
  16. 【算法竞赛从入门到精通】【基础算法】
  17. 鲜为人知的myeclipse配置
  18. MATLAB算法实战应用案例精讲-【自动驾驶】激光雷达标定
  19. 分布式 | 拜占庭将军问题
  20. 今日金融词汇---年报,是什么?

热门文章

  1. 全国计算机等级考试科目中加入“二级Python”
  2. IoU计算与读取Xml
  3. PHP Smarty 模板,PHP Smarty模板引擎
  4. 武大樱花预约服务器无响应,武大樱花网上预约不上怎么办2021
  5. 设置libevent
  6. 数据分析:基于随机森林(RFC)对酒店预订分析预测
  7. 鑫信腾IPO过会:年营收3.8亿 小米长江基金是股东
  8. toolstrip 去掉圆角_c# – ToolStrip圆角
  9. 【解决nvidia-smi】不是内部或外部命令,也不是可运行的程序 或批处理文件
  10. 功率W与dBm的对照表及关系