• 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也会正确释放


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

  • 相关阅读:
    转:[windows]DOS批处理添加任务计划
    转:winform_webApiSelfHost及 OWIN WebAPI Service
    Ubuntu上将终端安装到右键上
    Ubuntu上安装VMware tools
    OpenStack中的rabbitmq的配置方法
    centos上的grub文件修改
    centos7上安装0penStack
    怎样使用yum安装OpenStack
    epel扩展库的安装
    centos7上修改主机名
  • 原文地址:https://www.cnblogs.com/caoshenghe/p/1574052.html
Copyright © 2020-2023  润新知