基於對象的資源管理方法,建立在C++對構造函數、析構函數、拷貝函數的基礎上。
條款13:以對象管理資源(Use objects to manage resources)
可能出現的情形:
如果在一個函數中使用了一塊資源,那麼在這個函數結束前,有義務去釋放這一塊資源。但是可能因爲一個過早的return語句,或者異常的拋出,使得最後沒有釋放這塊資源。
正確的做法:
1、獲取資源後立刻放進管理對象內。
2、管理對象運用析構函數確保資源被釋放。
RAII:Resource Acquisition Is Initialization(資源獲取時機便是初始化時機)
條款14:在資源管理類中小心copying行爲(Think carefully about copying behavior in resource-managing classes)
可能出現的問題:
對於auto_ptr和shared_ptr負責管理heap-based資源上,然而並非所有資源都是heap-based,所以有時候你需要建立自己的資源管理類。(猜想:比如互斥鎖,描述符?)