看这里:

http://blog.csdn.net/lollipop_jin/article/details/8499530

shared_ptr可以多线程同时读,但是涉及到写,需要加锁。

shared_ptr开销较大。

多个(5个以上)shared_ptr共享一个动态对象,那么每个shared_ptr的开销比起只使用原生指针的开销大概在3,4倍左右(这还是理想状况,忽略了动态分配带来的俑余开销)。如果只有一个shared_ptr独占动态对象,空间上开销更是高度十数倍!而auto_ptr的开销只是使用原生指针的两倍。

里面提到虚表,但是其实上这个虚表指的是 sp_count_base 和 sp_count_impl_p 之间继承关系+virtual导致的虚表。详细可以看最下面的讨论。
scoped_ptr 不能被复制或者赋值。
weak_ptr跟shared_ptr配合使用,对weak_ptr实例调用 lock()的时候,增加其引用计数。

shared_ptr里面一个指针,一个引用计数用到的类(其实是引用,分配在堆上)。

http://www.cnblogs.com/helloamigo/p/3575098.html

更详细的在后面一篇。

这一篇讲的很透彻: http://www.2cto.com/kf/201301/186671.html
《boost::shared_ptr内部结构》
看了下面两幅图,基本清楚了。

其他不太详细的描述(可看可不看):

http://blog.chinaunix.net/uid-16723279-id-3568442.html

转载于:https://www.cnblogs.com/charlesblc/p/6500760.html

智能指针shared_ptr, auto_ptr, scoped_ptr, weak_ptr总结相关推荐

  1. 【C++】智能指针(auto_ptr,shared_ptr,unique_ptr)及 shared_ptr 强引用原理

    C++智能指针(Smart Pointer) 传统指针存在的问题 auto_ptr 智能指针的简单自实现 shared_ptr shared_ptr 内存销毁的原理(强引用) shared_ptr 的 ...

  2. C++智能指针shared_ptr、unique_ptr以及weak_ptr

    目录 shared_ptr类 shared_ptr和unique_ptr都支持的操作 shared_ptr独有的操作 make_shared函数 shared_ptr自动销毁所管理的对象 由普通指针管 ...

  3. 智能指针(shared_ptr、unique_ptr、weak_ptr)的使用

    智能指针的使用 一.shared_ptr 1.创建一个shared_ptr 2.shared_ptr的常用成员函数 reset成员函数的使用 3.==注意事项== 二.unique_ptr 1.uni ...

  4. 智能指针shared_ptr的原理、用法和注意事项

    智能指针shared_ptr的原理.用法和注意事项 1 前言 2 shared_ptr原理 3 shared_ptr的基本用法 3.1 初始化 3.2 获取原始指针 4 智能指针和动态数组 4.1 c ...

  5. 智能指针shared_ptr的用法

    智能指针shared_ptr的用法 2016-12-03 15:39 by jiayayao, 360 阅读, 0 评论, 收藏, 编辑 为了解决C++内存泄漏的问题,C++11引入了智能指针(Sma ...

  6. 智能指针shared_ptr

    如果有可能就使用unique_ptr,然后很多时候对象是需要共享的,因此shared_ptr也就会用得很多.shared_ptr允许多个指向同一个对象,当指向对象的最后一个shared_ptr销毁时, ...

  7. 智能指针shared_ptr的几个例子

    #include <string> #include <iostream> #include <memory> //智能指针定义在头文件memory中,例如shar ...

  8. get方法报空指针_智能指针shared_ptr踩坑笔记

    平时写代码一直避免使用指针,但在某些场景下指针的使用还是有必要的.最近在项目中简单使用了一下智能指针(shared_ptr),结果踩了不少坑,差点就爬不出来了.痛定思痛抱着<Cpp Primer ...

  9. C++ 使用智能指针shared_ptr/unique_ptr管理数组

    目录 零.要管理的类 一.使用shared_ptr管理数组 二.使用unique_ptr管理数组 1.第一种方式 2.第二种方式 关于shared_ptr/unique_ptr的基础,我不在本篇博客中 ...

  10. C++ 智能指针 shared_ptr、make_shared用法

    一.使用shared_ptr条件 C++版本11以上 需引入头文件 #include <memory> 否则编译会报错 error: 'shared_ptr' was not declar ...

最新文章

  1. 错过CVPR 2017?绝对不能错过GAIR大讲堂——上海交大专场开启报名
  2. IBM Java多线程 - 3.无处不在的线程
  3. 常州大学 计算机与人工智能学院,第一届计算机视觉青年学者论坛(CVYSF)在常州大学举办...
  4. 浅谈:稀疏数组与二维数组之间的转换
  5. Coursera自动驾驶课程第2讲:The Requirements for Autonomy
  6. oracle表重命名 索引,CSS_在Oracle数据库中按用户名重建索引的方法,如果你管理的Oracle数据库下某 - phpStudy...
  7. VC2012 小助手的破解
  8. [Vue Router warn]
  9. 完整版 Chrome 浏览器将登陆 Fuchsia OS
  10. 摄像头、视频采集和摄像设备图像质量判断的几种简单有效目测方法
  11. 欺骗的艺术----(8)
  12. Ninja工具介绍及基本语法
  13. Android控件之TextView全解析
  14. arthas热更新线上代码
  15. 尝试探索3G通信网络
  16. VS2010下破解Visual Assist X
  17. 2022-2027年中国汽车传感器行业市场调研及未来发展趋势预测报告
  18. Shuixin 陈 的DISC性格分析报告
  19. 增值电信业务都有哪些种类
  20. 数据驱动应用(三):异构数据服务(基于有向无环图DAG)

热门文章

  1. java 邮件内嵌图片_(二)JavaMail创建包含内嵌图片的邮件
  2. java 线程condition_(七)java多线程之Condition
  3. 恩佐盒子服务器维护,恩佐宝盒有苹果版吗
  4. mysql中的rm语句用法_SQLMap部分命令用法详解
  5. nginx伪静态php如何配置文件,nginx实现thinkphp伪静态的配置例子
  6. php table td边框,怎样对table和td技巧性设置表格边框
  7. 一般通话记录能保存多少条_有一手|2万炒股0一般能挣多少?
  8. Windows服务中Timer组件Tick无法触发
  9. 人工智能撰稿将代替人工写作?我们拭目以待
  10. php-5.4 升级到 php7.2