资源管理

资源管理

所谓资源就是,一旦用了它,将来必须还给系统.

13.以对象管理资源

  • 为防止资源泄露,请使用RAII对象,他们在构造函数中获得资源并在析构函数中释放资源.
  • 两个常被使用的RAII classes 对象分别是trl::shared_ptr和auto_ptr.前者通常是较佳选择,因为其copy行为比较直观.若选择auto_ptr,复制动作会使他(被复制物)指向null.

14.在资源管理类中小心copy行为

  • 复制RAII对象必须一并复制它所管理的资源,所以资源的copying行为决定RAII对象的copying行为.
  • 普通而常见的RAII class copying行为是: 抑制copyig,施行引用计数法(reference counting).不过其他行为也都可能被实现.

15. 在资源管理类中提供对原始资源的访问

  • APIs 往往要求访问原始资源(raw resources), 所以每一个RAII class应该提供一个"取其所管理之资源"的方法.
  • 对原始资源的访问可能经由显示转换或隐式转换.一般而言显式转换比较安全,但隐式转换对客户比较方便.

16.成对使用new和delete时采取相同形式

  • 如果你在new表达式使用[],必须在相应的delete表达式中使用[].如果你在new表达式中不使用[],一定不要在相应的delete表达式中使用[].

17.以独立语句将newed 对象置入智能指针

  • 以独立语句将newed对象存储于(置入)智能指针内.如果不这样做,一旦异常被抛出,有可能导致难以察觉的资源泄露.
原文地址:https://www.cnblogs.com/o-v-o/p/10161167.html