• 智能指针shared_ptr, auto_ptr, scoped_ptr, weak_ptr总结


    看这里:

    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

  • 相关阅读:
    谦谦君子 温润如玉
    [Linux: vim]vim自动生成html代码
    /boot/grub/grub.conf 内容诠释
    mini_httpd在RedHat 5下安装
    html 简单学习
    v4l
    手机处理器哪个好 智能手机处理器进化知识
    小败局】一位草根北漂创业者自述:赚钱的快餐店之死
    读书
    手游研发CJ抱大腿指南
  • 原文地址:https://www.cnblogs.com/charlesblc/p/6500760.html
Copyright © 2020-2023  润新知