条款17:以独立语句将newed对象置入智能指针
来源:互联网 发布:淘宝京东天猫哪个好 编辑:程序博客网 时间:2024/06/06 03:03
一、原因
int priority();
void processWidget(std::tr1::shared_ptr<Widget> pw, int priority);
有调用:
processWidget(std::tr1::shared_ptr<Widget>(new Widget), priority());
在调用ProcessWidget之前,编译器必须创建代码,做以下三件事:
1.调用priority 2.执行"new Widget" 3.调用tr1::shared_ptr构造函数
但是这三件事的执行顺序是不确定的,如果按照以下顺序:
1.执行"new Widget"
2.调用priority
3.调用tr1::shared_ptr构造函数
如果调用priority函数时出现异常,new的资源不会被释放,资源泄露。
于是应该写成如下:
std::tr1::shared_ptr<Widget> pw(new Widget);
ProcessWidget(pw, priority());
二、总结
以独立语句将newed对象存储于智能指针内。如果不这样做,一旦异常被抛出,有可能导致难以察觉的资源泄露。
- 条款17:以独立语句将newed对象置入智能指针
- 条款17:以独立语句将newed对象置入智能指针
- 条款17:以独立语句将newed对象置入智能指针
- 条款17:以独立语句将NEWED对象置入智能指针
- effective c++ 条款17 :以独立语句将newed 对象置入智能指针
- 条款17:以独立语句将newed的对象置入智能指针
- 《Effective C++》学习笔记条款17 以独立语句将newed对象置入智能指针
- Effective C++——》条款17:以独立语句将newed的对象置入智能指针
- 条款17:以独立语句将newed对象置入智能指针
- 条款17:以独立语句将newed对象置入智能指针
- Effective C++:条款17:以独立语句将newed对象置入智能指针
- 条款17 以独立的语句将newed对象置入智能指针
- 条款17以独立语句将newed对象置入智能指针
- 读书笔记《Effective C++》条款17:以独立语句将newed对象置入智能指针
- 条款17:以独立语句将newed对象置入智能指针
- 条款17:以独立的语句将newed对象置入智能指针
- item17: 以独立语句将newed对象置入智能指针
- effective C++ 读书笔记 条款17 以独立语句讲newed对象置入智能指针
- RMAN CONFIGURE
- 学习笔记
- MySQL查询优化技术系列讲座之使用索引(二)
- 值得收藏的JAVA经典书籍。
- 一步一学Linux与Windows 共享文件Samba (v0.2b)
- 条款17:以独立语句将newed对象置入智能指针
- 网页上输入数学公式TeX
- 关于signal
- 关系数据库三大范式详细剖析
- Maven使用--setting.xml配置
- C#读取二进制文件入数据库
- A Configuration error occurred during startup.Please verify the preference field with the prompt:Cannot find a free socket for t
- PL/SQL Developer使用技巧
- 【Enhancement】--How to Find a Screen Exit for T-code