3.资源管理
来源:互联网 发布:苹果电脑下不了软件 编辑:程序博客网 时间:2024/05/13 20:42
Item13:Use objects to manage resources.
RAII(Resource Acquisition Is Initialization):资源获取时便是初始化时。
Item14:Think carefully about copying behavior in resource-managing.
shared_ptr使用注意点:
当处理Mutex互斥器对象时,有lock和unlock函数。
void lock(Mutex *pm);void unlock(Mutex *pm);Mutex m;shared_ptr<Mutex> sp(&m);
用shared_ptr管理时,当引用计数为0时,sp将释放所指对象,而其实其它进程可能还会用到该互斥对象,所以可以通过显示指定删除器来解决。
shared_ptr<Mutex> sp(&m,unlock);
引用计数为0时,对该互斥对象解锁。
Item15:Provide access to raw resources in resource-managing classes.
shared_ptr通过get函数来获取原始指针。
Item16:Use the same form in corresponding uses of new and delete.
Item17:Store newed objects in smart pointers in standalone statements.
fun(shared_ptr<A>(new A),g());
如果运行顺序如下(编译器对语句内进行优化)
①new A
②g( )
③shared_ptr构造函数
若g( )抛出异常则会导致内存泄漏,为了避免此类语句的潜在危害,我们应该这样写:
shared_ptr<A> sp(new A); //以独立语句将newed对象置入智能指针中fun(sp,g());
0 0
- 3.资源管理
- Effective C++ 3.资源管理
- 资源管理
- 资源管理
- 资源管理
- 资源管理
- 资源管理
- 资源管理
- 资源管理
- 资源管理
- 资源管理
- 资源管理
- 资源管理
- 资源管理
- 资源管理
- 资源管理
- C#资源管理
- D3D资源管理
- svn is already locked 解决方案
- BZOJ_P1901 [ZJU2112] Dynamic Rankings(树状数组+主席树)
- ArcGIS合并要素工具简单介绍
- ibatis(sqlmap)中使用in语句的方法
- block单例宏
- 3.资源管理
- 默然说话20160308
- iOS程序中调用系统自带应用
- HashMap HashTable ConcurrentHashMap key和value是否可以null的问题 源码分析
- DOM基础(学习笔记)
- ActivityManagerService学习笔记
- NFS配置
- bzoj4421 Digit Division 递推
- 交换算法