• RAII获取资源即初始化


    RAII--- resource acquisition is initialization 获取资源即初始化是一个在C++中简单技

    它利用C++对象的生命周期来管理资源,如内存、文件句柄、网络连接、同步对象等等。
    RAII的技术原理很简单:如果希望保持对某个重要资源的跟踪,那么创建一个对象,并将资源
    生命周期与资源的生命周期相关联。最简单的RAII形式是创建这样一个对象:构造函数中获取
    一份资源,析构函数中则释放资源。
    class Resource{}

    class ResourceHandle
    {
    public:
          explicit ResourceHandle( Resource* a ): m_pResource(a){}
          ~ResourceHandle(){ delete m_pResource; }
          Resource* Get(){ return m_pResource; }
        
    private:
        ResourceHandle( const ResourceHandle& );
        ResourceHandle& operator = ( const ResourceHandle& );
        static void* operator new( size_t nSize );

    private:
     Resource*  m_pResource;

    }


    使用的时候,一般把ResourceHandle声明为一个函数的局部对象,或者静态变量
    void fun()
    {
        SReourceHandle rHandle( new Resource );
         。。。
     
    }

    当函数结束的时候,Resource就会自动释放了。就算有异常,Resource也会正确释放


    就算分配资源的时候产生异常,也不会有资源泄露

  • 相关阅读:
    this.$route和this.$router的区别
    IE不支持 Promise 解决办法
    滚动定位的多种方法
    css设置禁止文字被选中
    input标签内容改变的触发事件
    webpack-dev-server配置指南webpack3.0
    Object.keys方法之详解
    mac安装webpack失败
    vue2使用animate css
    http
  • 原文地址:https://www.cnblogs.com/caoshenghe/p/1574052.html
Copyright © 2020-2023  润新知