Item 13 管理在堆上new出来的对象
来源:互联网 发布:小当家水浒卡淘宝 编辑:程序博客网 时间:2024/04/25 19:32
创建Investment资源之后立即交给资源管理器auto_ptr,这叫Resource Acquisition Is Initialization (RAII)。
资源管理器在dtor里销毁资源。如果发生异常,会很麻烦。
不要用多个auto_ptr管理同一个资源。否则会发生多次销毁。auto_ptr本身也改装了copy动作(copy ctor和assignment operator)。
因为有着这种奇怪的拷贝行为,所以auto_ptr不能用于管理STL容器内的元素。STL容器要求,其元素必须能正常拷贝。
可使用“引用计数智能指针”:reference-counting smart pointer (RCSP)来代替auto_ptr。和垃圾收集类似,不同之外在于RCSP不能处理“循环引用”。
shared_ptr就是一种RCSP:
对于初始化,和auto_ptr没什么不同。
auto_ptr和tr1::shared_ptr都用delete来析构对象,而非delete[]。所以不能管理对象数组。但是如果误用,编译器不报错。
boost::scoped_array和boost::shared_array可管理数组对象。
- Item 13 管理在堆上new出来的对象
- Item 17 将new出来的对象存入智能指针
- effective c++ Item 17: 在一个独立的语句中将 new 出来的对象存入智能指针
- 保证只能在堆上new一个类对象
- [翻译] Effective C++, 3rd Edition, Item 17: 在 standalone statements(独立语句)中将 new 出来的 objects(对象)存入 smart pointers(智能指针)
- 对象在堆上的创建问题
- 在堆上申请空间存放对象的内存管理及析构函数调用时机
- new出来的对象一定要delete
- new动态分配内存(在堆上)
- Item 17:在单独的语句中将new的对象放入智能指针 Effective C++笔记
- new出来的service对象和你在spring中注入的service对象不是同一个对象
- C++ new、堆上和栈上分配对象
- 关于 Spring new出来的对象 与自动注入对象
- C++保存在栈和堆上的对象
- 只在堆、栈上生成对象的类
- 判断对象在堆上的代码例子
- 类对象只能在堆上分配空间的方法
- 堆对象的new与delete
- 软件分层
- win7下cygwin + Eclipse + Lucene3.1.0 安装编译
- 来自李开复的关于写简历的建议
- 数据库应用程序常见T-SQL和PL/SQL
- Dojo1.6新特性概览
- Item 13 管理在堆上new出来的对象
- ORACLE PL/SQL与SQL SERVER T-SQL一些比较【经典】
- 点通- 要相当小心
- 折半查找
- Android JNI学习之javah命令的正确使用(找了好半天才找到的,汉,网上好多说法都没用)
- 20世纪PC上的单机游戏发展历史
- 链表
- VC 双缓冲绘图
- ASP中实现java中hashMap的类