第13条: 要使用对象来管理资源。 [1]
l 为了避免资源泄露,可以使用 RAII 对象,使用构造函数获取资源,析构函数释放资源。
l auto_ptr 或 TR1::shared_ptr 是 两个常用并且实用的 RAII 类。通常情况 下 TR1::shared_ptr 是更好的选择,因为它的复制行为更加直观。复制一个 auto_ptr 将会使其重设为 null 。
第14条: 要留心资源管理类中的复制行为
l 复制一个 RAII 对象的同时也要复制其所管理的对象,所以资源管理的复制行为由 RAII 对象的复制行为决定,一般可能有四种行为:
1 禁止复制。 在许多情况下,允许 RAII 被复制没有任何意义。
2 为基础资源进行引用计数。 有时,我们期望能保留对一个资源的所有权,直到其所涉及的最后一个对象被删除为止。
3 复制主要的资源。 一些时候,你可以在需要的情况下为资源复制出任意份数的副本,此时你需要一个资源管理类的唯一理由就是:确保每份副本在其工作完成之后得到释放。
4 传递主要资源的所有权。 在少数情况下,你可能需要确保仅仅有一个 RAII 对象引用了一个未定义类型的资源,当复制这一 RAII 对象时,资源的所有权也从源对象传递到目标对象了。