Exceptional C++ Style之12
2006-03-09 14:31
218 查看
第12条 异常安全性:值得吗
资源获取即初始化,这里用到了智能指针的概念也就是说把资源管理的工作交给了构造函数和析构函数,这应该是个比较流行的办法,我遇到过因为分支产生的内存泄漏问题。
如果可以的话,不要贸然返回。但是有什么好的办法?我在我的实践中考虑到效率的问题,需要及早返回。记得在Stack中讨论Top()和Pop(),这就是为什么函数要功能单一的真谛,如果需要详细了解,请参见《Effective STL》。这东西真是触类旁通。
不能在析构函数中抛出异常,这在之前的Blog好像有过论述,这参见《C++编程思想》第二卷关于Defensive Programming的论述。那么现在需要加上deallocation,这个原因不想重复,可以参见Allocator的实现。Swap也需要保证,这里Sutter提出Vecotr的insert不是强异常安全性。我在微软的实现上没有看见强异常安全性的保证,但我真不觉得会出现不可恢复的灾难。
资源获取即初始化,这里用到了智能指针的概念也就是说把资源管理的工作交给了构造函数和析构函数,这应该是个比较流行的办法,我遇到过因为分支产生的内存泄漏问题。
如果可以的话,不要贸然返回。但是有什么好的办法?我在我的实践中考虑到效率的问题,需要及早返回。记得在Stack中讨论Top()和Pop(),这就是为什么函数要功能单一的真谛,如果需要详细了解,请参见《Effective STL》。这东西真是触类旁通。
不能在析构函数中抛出异常,这在之前的Blog好像有过论述,这参见《C++编程思想》第二卷关于Defensive Programming的论述。那么现在需要加上deallocation,这个原因不想重复,可以参见Allocator的实现。Swap也需要保证,这里Sutter提出Vecotr的insert不是强异常安全性。我在微软的实现上没有看见强异常安全性的保证,但我真不觉得会出现不可恢复的灾难。
相关文章推荐
- 《Exceptional C++ Style》译序[已出版]
- 《Exceptional C++ Style》译序[已出版]
- Exceptional C++ Style之23
- Exceptional C++ Style之34
- 《Exceptional C++ Style》开放样章译稿
- 《Exceptional C++ Style》开放样章译稿
- Exceptional C++ Style 15)访问权限的使用
- 《Exceptional C++ Style》译序[已出版]
- 《Exceptional C++ Style》开放样章译稿
- Java vs C++ (12)member initial style
- Exceptional C++ Style之16
- Exceptional C++ Style之25
- Herb Sutter 又要出新书--《Exceptional C++ Style》啦!
- Exceptional C++ Style之2
- Exceptional C++ Style目录
- Exceptional C++ Style之9
- Exceptional C++ Style之11
- 《Exceptional C++ Style》开放样章译稿
- 读书笔记之:Exceptional C++ Style (2004) [++]
- 《Exceptional C++ Style》开放样章译稿