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
原创粉丝点击