条款17:以独立语句将newed对象置入智能指针
来源:互联网 发布:数据透视表实例下载 编辑:程序博客网 时间:2024/06/08 00:02
// 条款17: 以独立的语句将newed对象置入智能指针。// 1.以独立语句将newed对象存储于智能指针内。如果不这样做,一旦异常被抛出,// 有可能导致难以察觉的资源泄漏。// 2.智慧名言:以对象管理资源。所以用智能指针管理Widget#include <iostream>#include <memory>int GetPriority() {return 1;}class Widget17 {};void ProcessWidget1(std::tr1::shared_ptr<Widget17> pw, int priority);int main() {// cannot convert argument 1 from 'Widget17 *' to 'std::shared_ptr<Widget17>'//ProcessWidget1(new Widget17, GetPriority());// 下面这种方式可以通过编译,但是会存在内存泄露的风险ProcessWidget1(std::tr1::shared_ptr<Widget17>(new Widget17), GetPriority());// 因为C++不同于Java,C#,这两种语言总是以特定的次序完成函数参数和核算。// 而C++是不确定的,可以肯定的是new Widget肯定发生在tr1::shared_ptr构造函数之前// 但是GetPriority发生的时间位置不能确定,如果是这样的顺序:new Widget-->Getpriority-->// tr1::shared_ptr的构造函数。如果在Getpriority的时候发生了异常,那么new出来的Widget还没有// 被放到tr1::shared_ptr中,那么就可能产生资源泄漏。// 解决方法将new一个对象和传给智能指针分开。std::tr1::shared_ptr<Widget17> pw(new Widget17);ProcessWidget1(pw, GetPriority());return 0;}
阅读全文
0 0
- 条款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对象置入智能指针
- Caused by: java.lang.ClassNotFoundException: weblogic.jndi.WLInitialContextFactory
- 项目管理利器(Maven)——Pom.xml解析
- Scala--隐式转换
- 使用for循环打印9×9乘法表
- zimpha的bc出题录(当然是部分啦)
- 条款17:以独立语句将newed对象置入智能指针
- 重学数据结构 链表增删
- [codevs1135]选择客栈
- js小练习:利用getElementsByTagName方法、for循环、this指针、数组实现对多个相同元素value值的改变
- EhCache注解使用
- 用Windows自带工具给U盘4k对齐
- 求数组中第K个最大的值
- 条款18:让接口容易被正确使用,不易被误用
- JavaScript标识符命名规则