Effective C++读书笔记3(资源管理)
来源:互联网 发布:centos 7硬盘安装 编辑:程序博客网 时间:2024/06/10 02:47
◆条款13 以对象管理资源
以对象管理资源,可以在释放对象时经由析构函数来释放该对象所占用的资源,经此来防止内存泄漏。根据这原则,获得资源后立刻放进管理对象。⇒RAII("Resource Acquisition IS Initialization.")
可以用智能指针来防止忘记delete,但STD的auto_ptr的复制行为很奇怪,复制的源会被置为NULL,BOOST的shared_ptr则没有这个问题。
◆条款14 在资源管理类中小心coping行为
有些在资源管理类中被管理的资源在拷贝(拷贝构造函数,拷贝赋值函数)后可能呈现出意想不到的结果,比如管理一个锁,拷贝时就又加了一次锁,所以需要小心考虑两个拷贝函数的实现。可以通过禁止拷贝或者对资源使用进行计数来管理此类资源。
◆条款15 在资源管理类中提供对原始资源的访问
经常需要直接访问一个资源管理类管理的原始资源,可以通过提供一个get方法,或者经由隐式类型转换来实现,一般来说前者较安全。
◆条款16 成对使用new和delete要采取相同形式
new出来的数组delete时要用delete [ ],所以最好尽量不要对数组形式做typedef动作,因为很可能忘记它的数组属性。
◆条款17 以独立语句将newed对象置入智能指针
智能指针的初始化必须放在单独语句中执行,尤其不能放在函数参数里作为参数来初始化,因为有可能别的参数异常导致该指针无法释放。
这五个条款中心思想是将资源纳入类的管理范围内来,以此来管理资源的初始化和释放过程,其中析构函数扮演了很重要的角色,因为析构函数永远都会被最后调用的。智能指针也可以管理这些资源,但是效率会差一点,看如何平衡了,从项目经验上来看,制定一套不依赖编译器的编程法则或许也是不错的方式,看起来很高明的设计往往会很难看懂,太依赖于程序员的能力。而编程法则能很简单的由Review时同事指出问题。
★大的项目里可以定制一整套内存使用法则,建立能控制heap内存的管理类,其实就是定制new和delete。
以对象管理资源,可以在释放对象时经由析构函数来释放该对象所占用的资源,经此来防止内存泄漏。根据这原则,获得资源后立刻放进管理对象。⇒RAII("Resource Acquisition IS Initialization.")
可以用智能指针来防止忘记delete,但STD的auto_ptr的复制行为很奇怪,复制的源会被置为NULL,BOOST的shared_ptr则没有这个问题。
◆条款14 在资源管理类中小心coping行为
有些在资源管理类中被管理的资源在拷贝(拷贝构造函数,拷贝赋值函数)后可能呈现出意想不到的结果,比如管理一个锁,拷贝时就又加了一次锁,所以需要小心考虑两个拷贝函数的实现。可以通过禁止拷贝或者对资源使用进行计数来管理此类资源。
◆条款15 在资源管理类中提供对原始资源的访问
经常需要直接访问一个资源管理类管理的原始资源,可以通过提供一个get方法,或者经由隐式类型转换来实现,一般来说前者较安全。
◆条款16 成对使用new和delete要采取相同形式
new出来的数组delete时要用delete [ ],所以最好尽量不要对数组形式做typedef动作,因为很可能忘记它的数组属性。
◆条款17 以独立语句将newed对象置入智能指针
智能指针的初始化必须放在单独语句中执行,尤其不能放在函数参数里作为参数来初始化,因为有可能别的参数异常导致该指针无法释放。
这五个条款中心思想是将资源纳入类的管理范围内来,以此来管理资源的初始化和释放过程,其中析构函数扮演了很重要的角色,因为析构函数永远都会被最后调用的。智能指针也可以管理这些资源,但是效率会差一点,看如何平衡了,从项目经验上来看,制定一套不依赖编译器的编程法则或许也是不错的方式,看起来很高明的设计往往会很难看懂,太依赖于程序员的能力。而编程法则能很简单的由Review时同事指出问题。
★大的项目里可以定制一整套内存使用法则,建立能控制heap内存的管理类,其实就是定制new和delete。
- <<Effective C++>>读书笔记3: 资源管理
- 《Effective C++》读书笔记之中资源管理
- effective C++: 3资源管理
- Effective C++读书笔记3(资源管理)
- 【读书笔记】Effective C++—3 资源管理(之3)
- 【读书笔记】Effective C++—3 资源管理(之1)
- 【读书笔记】Effective C++—3 资源管理(之2)
- 【读书笔记】Effective C++—3 资源管理(之4)
- 《effective C++》读书笔记三——资源管理
- 《Effective C++》读书笔记(四) 资源管理
- 【effective c++读书笔记】【第3章】资源管理
- Effective C++读书笔记---资源管理
- <Effective C++: 资源管理> 笔记
- Effective C++(三)资源管理
- effective c++-资源管理
- 《Effective C++》资源管理章节
- effective c++:资源管理相关
- Effective C++读书笔记 资源管理(之一)
- .net Framework 2.0 专门提供了配置文件的操作
- [转]yum.conf 配置文件详解
- mysql
- HAL Flat Display Driver Demystified
- 转]解决modprobe : can't locate module block-major-43错误
- Effective C++读书笔记3(资源管理)
- Oracle分区表!
- 找到一款不错的网站压力测试工具webbench[原创]
- 常用Javascript表单取值方法
- c++头文件一览表
- 记我班入职微软(中国)的两名学员
- 我的真正有效javascript导出excel,可以导出输入框等
- Oracle初学者笔记(二)
- WinForm:利用多层Panel重叠实现同区显示不同内容