【M9】利用destructors避免泄漏资源
2014-03-03 19:49
211 查看
1、在堆上获取的动态资源,用户忘记delete,或者由于异常导致没有没执行到delete,都会造成资源泄漏。
2、我们知道,栈上的对象,离开作用域,必定要执行析构方法。即使抛出异常,会堆栈回滚,保证已经构造的对象进行析构。
3、因此,可以使用栈上的对象,管理资源,在析构方法中释放资源,保证不会资源泄漏。
4、考虑更一般化的资源,对于互斥体的加锁,解锁,也是同样的情况,需要保证互斥体一定会解锁。
5、对资源管理的类,就是智能指针。因此,需要对不同类型的对象进行管理,智能指针是模板类,在栈上分配,行为像指针。常用的智能指针有auto_ptr,shared_ptr。注意,智能指针默认的删除动作是delete。当然,也可以传递删除器给智能指针,也就是智能指针析构的时候,调用的方法。
2、我们知道,栈上的对象,离开作用域,必定要执行析构方法。即使抛出异常,会堆栈回滚,保证已经构造的对象进行析构。
3、因此,可以使用栈上的对象,管理资源,在析构方法中释放资源,保证不会资源泄漏。
4、考虑更一般化的资源,对于互斥体的加锁,解锁,也是同样的情况,需要保证互斥体一定会解锁。
5、对资源管理的类,就是智能指针。因此,需要对不同类型的对象进行管理,智能指针是模板类,在栈上分配,行为像指针。常用的智能指针有auto_ptr,shared_ptr。注意,智能指针默认的删除动作是delete。当然,也可以传递删除器给智能指针,也就是智能指针析构的时候,调用的方法。
相关文章推荐
- Hibernate具体参数说明
- 使用easyUI的combogrid来实现模糊查询,jsp部分
- qmake 之 CONFIG 与 QT 乱谈
- 控件使用
- 火狐和IE的window.event对象详解
- android获取手机应用之后放入gridview之后的点击事件
- Linux用户组添加查看
- mysql存储引擎(mysql学习六)
- python之字符串,列表转换截取记录
- 开端,我的C旅程
- poj 3225 线段树 经典题
- URL编码与解码
- LeetCode Restore IP Addresses
- Python 中调用命令行命令
- Python 几个重要的内置函数
- 最大子段和
- 关于UIView的autoresizingMask属性
- 每天一个linux命令(47):iostat命令
- mysql安装
- 作业、进程、线程