函数资源的自动释放

      当你需要经常在一个函数中分配资源,比如内存,文件,句柄等。函数可能有很多出口结束,这个时候需要释放资源,如果资源可以自动释放,而你不用自己去管理,那会便利很多。也可以防止忘记某些资源没被释放。

     这个时候你可以增加一个辅助类,有成员变量保存要释放的资源句柄或指针,该类析构的时候如果资源有效就强制释放资源。在函数的入口处,定义该类的一个变量,当变量越出作用域时自动调用该辅助类释放资源。

该类的实现方式有两种:

 (1)该类管理资源的分配,释放和操作,这个方法完善,重用性好,不过工作量比较大

(2)该类只做释放工作,资源由初始化函数传入,用构造函数只调用一次,不过这个方法重用性差

源代码为:

class CautoDeleteBufferClass

{

public:

         CautoDeleteBufferClass(char **pp)

         {

                   m_pp = pp;

         }

 

         ~CautoDeleteBufferClass()

         {

                   if(m_pp && *m_pp)

                   {

                            delete [] (*m_pp);

                            *m_pp = NULL;

                   }

                   m_pp = NULL;

         }

 

protected:

         char **m_pp;

};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值