1. 程式人生 > >Effective c++ 條款13:以物件管理資源

Effective c++ 條款13:以物件管理資源

所謂資源就是,一旦用了他,將來必須還給系統。比如記憶體,互斥鎖、圖形介面中的字型和筆刷、資料庫連線以及網路socket等。

1、資源取得時機便是初始化時機

RAII, Resource Acquisition Is Initialization

2、為確保資源總是被釋放,需要將資源放進物件內

將資源放進物件內,當控制流離開某個申請資源的函式時,該物件的解構函式會自動釋放那些資源。
獲得資源後立刻放進管理物件內。
管理物件運用解構函式確保資源被釋放。
標準資料庫提供的auto_ptr正是針對這種形勢而設計的特製產品。由於auto_ptr被銷燬時會自動刪除它所指之物,所以一定要注意別讓多個auto_ptr指向同一物件。


auto_ptr的替代方案是“引用計數型智慧指標”shared_ptr,其持續追蹤共有多少物件指向某筆資源,並在無人指向它時自動刪除該資源。
關於現有的智慧指標的好處和劣處網上的資料比較多,建議更深入瞭解。