博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
智能指针shared_ptr, auto_ptr, scoped_ptr, weak_ptr总结
阅读量:6822 次
发布时间:2019-06-26

本文共 745 字,大约阅读时间需要 2 分钟。

看这里:

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

你可能感兴趣的文章
UIImagePickerController说明
查看>>
01.C语言入门
查看>>
Spring-Batch中MapJobExplorerFactoryBean的配置方式
查看>>
jsp与iframe跨域访问的一个方法
查看>>
ViewPager + Fragment 取消预加载
查看>>
BigDecimal 02 - 注意事项
查看>>
用js玩桌球游戏
查看>>
maven下运行jetty报错
查看>>
android 配置framework 使应用首选安装在SD卡
查看>>
h5 点击表单 顶部fixed 菜单栏 上移
查看>>
windows 2008 R2 64位系统杀毒软件
查看>>
git直接提交删除的文件方法(附脚本)
查看>>
我的友情链接
查看>>
netty学习笔记
查看>>
更改win7文件类型默认操作
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
Webgoat 笔记总结 Web Services
查看>>
jquery easyui 阶段总结
查看>>
Linux Mysql安装部署
查看>>