• shared_ptr


    1、方便资源的管理,自动释放没有指针引用的资源。
    2、使用引用计数来标识是否有多余指针指向该资源。(shart_ptr本身指针会占1个引用)
    3、在赋值操作中, 原来资源的引用计数会减一,新指向的资源引用计数会加一。
      std::shared_ptr<Test> p1(new Test);
      std::shared_ptr<Test> p2(new Test);
      p1 = p2;
    4、引用计数加一/减一操作是原子性的,所以线程安全的。
    5、make_shared要优于使用new,make_shared可以一次将需要内存分配好。
      std::shared_ptr<Test> p = std::make_shared<Test>();
      std::shared_ptr<Test> p(new Test);
      std::shared_ptr的大小是原始指针的两倍,因为它的内部有一个原始指针指向资源,同时有个指针指向引用计数。
    6、引用计数是分配在动态分配的,std::shared_ptr支持拷贝,新的指针获可以获取前引用计数个数。
    构造
    1、通过构造函数
    std::shared_ptr<T> p1(new T());
    2、std::make_shared<T>辅助函数
    std::shared_ptr<T> p2 = std::make_shared<T>();
    3、reset方法来初始化shared_ptr
    p1.reset(new T());
    std::shared_ptr获得 std::weak_ptr 所指向的被管理对象的临时所有权
    std::shared_ptr<T>  ptr =  std::weak_ptr<T> wPtr.lock()
    1 use_count ()  // 返回引用计数的个数
    2 unique()    // 返回是否是独占所有权( use_count 为 1)
    3 swap()     // 交换两个 shared_ptr 对象(即交换所拥有的对象)
    4 reset()    // 放弃内部对象的所有权或拥有对象的变更, 会引起原有对象的引用计数的减少
    5 get()     //  返回内部对象(指针), 由于已经重载了()方法, 因此和直接使用对象是一样的.
    如 shared_ptr<int> sp(new int(1)); sp 与 sp.get()是等价的、
  • 相关阅读:
    移动web前端高效开发实践 读书笔记
    前端开发最佳实践-读书笔记
    frontend-Tips
    匿名函数的几种写法
    12个用得着的JQuery代码片段(转)
    tesseract-ocr 学习笔记(比网上的中文说明都详细)
    关于大数据的思考
    单片机实验的小记录~~PWM
    组建Redis集群遇到`GLIBC_2.14' not found和ps -ef 不显示用户名
    柔性数组(Redis源码学习)
  • 原文地址:https://www.cnblogs.com/osbreak/p/9211257.html
Copyright © 2020-2023  润新知