Item 17 将new出来的对象存入智能指针
2011-04-21 10:23
323 查看
现在有两个函数是这样使用的:
如果使用下面的方法调用函数,可能会发生资源泄漏:
原因是:函数的参数执行顺序是不一定的。如果new出来对象以后,还没有存入智能指针,这时调用priority出现异常,则资源泄漏。
改正的方法很简单,调整语句的顺序:
// 取得处理优先级 int priority(); // 根据优先级,对动态分配的Widget做一些处理 void processWidget(std::tr1::shared_ptr<Widget> pw, int priority);
如果使用下面的方法调用函数,可能会发生资源泄漏:
processWidget(std::tr1::shared_ptr<Widget>(new Widget), priority());
原因是:函数的参数执行顺序是不一定的。如果new出来对象以后,还没有存入智能指针,这时调用priority出现异常,则资源泄漏。
改正的方法很简单,调整语句的顺序:
std::tr1::shared_ptr<Widget> pw(new Widget); processWidget(pw, priority());
相关文章推荐
- effective c++ Item 17: 在一个独立的语句中将 new 出来的对象存入智能指针
- [翻译] Effective C++, 3rd Edition, Item 17: 在 standalone statements(独立语句)中将 new 出来的 objects(对象)存入 smart pointers(智能指针)
- 读书笔记 effective c++ Item 17 使用单独语句将new出来的对象放入智能指针
- Item 17:在单独的语句中将new的对象放入智能指针 Effective C++笔记
- Item 17:在单独的语句中将new的对象放入智能指针
- C++箴言:将new出来的对象存入智能指针
- Effective C++ Item 17 以独立语句将newed对象置入智能指针
- [EffectiveC++]item17:以独立语句将newed对象置入智能指针
- 条款17 以独立语句将new对象置入智能指针
- effective C++ 条款 17:以独立语句将newed对象置入智能指针
- C++之以独立语句将newed对象置入智能指针(17)---《Effective C++》
- 读书笔记《Effective C++》条款17:以独立语句将newed对象置入智能指针
- C++中为什么需要将new对象通过独立语句置入智能指针
- Effective C++ 学记之17 以独立语句将newed对象置入智能指针
- 读书笔记《Effective c++》 条款17 以独立语句将newed对象置入智能指针
- effective C++ 读书笔记 条款17 以独立语句讲newed对象置入智能指针
- 条款17:以独立语句将newed对象置入智能指针
- Effective C++ 条款17 以独立语句将newed对象置入智能指针
- 条款17以独立语句将new置入智能指针
- Item 13 管理在堆上new出来的对象