• share_ptr


    1、为了保证不会重复释放内存,auto_ptr的copy构造和copy赋值都是破坏性操作,执行后,导致右操作数的指针为0。这就出现了,copy构造或者copy赋值后,两个对象不相等了。

    2、auto_ptr的问题就是,一块内存只能有一个指针指向它,为了解决这个问题,使用share_ptr。

    3、share_ptr是如何实现的?

      a、内部有一个指向原始资源的指针。

      b、内部维护一个share_count,记录有多少个指针指向该内存。

      c、析构的时候,share_count>1,将计数减1;share_count==1释放内存。

      d、考虑到每个share_ptr中都有一个自己的share_count,而且还要保证这个数一致,应该这样做:先对原始资源封装,加入share_count,成为带有count的资源,share_count在对它封装,这样就可以只有一个share_count了。

      e、copy构造的时候,lhs的指针指向rhs的资源,share_count加1。

      f、copy赋值的时候,先检查左操作数原来的资源是否可以释放,lhs的指针指向rhs的资源,share_count加1。

  • 相关阅读:
    小程序 新建项目底部tabbar
    HBuild 连接安卓手机
    jquery tab切换
    VUE 项目运行
    VUE 创建element项目
    VUE环境搭建、创建项目、vue调试工具
    HBuild 连接苹果手机
    javascript五种基本类型
    SASS 简单实用
    redis基础02-redis的5种对象数据类型
  • 原文地址:https://www.cnblogs.com/nzbbody/p/3381071.html
Copyright © 2020-2023  润新知