(1)、爲防止資源泄漏,請使用RAII對象,它們在構造函數中得到資源並在析構函數中釋放資源c++
(2)、使用智能指針。shared_ptr、auto_ptr安全
(1)、複製RAII對象必須一併複製它所管理的資源(內存、文件、鎖),因此資源的coping行爲取決於RAII對象的copying行爲;函數
(2)、廣泛常見的RAII class copying行爲是:禁止複製(繼承Uncopyable)、採用引用計數法(shared_ptr),或者其餘方法。spa
(1)、資源管理類中應該提供訪問其原始資源的接口;指針
(2)、顯式轉換(提供函數,如shared_ptr的get),隱式轉換(重寫operator)。通常顯式比較安全,但隱式轉換比較方便。對象
(1)、new-->deleteblog
(2)、new[]-->delete[]繼承
(1)、在單獨的語句內以智能指針存儲newed所得的對象,避免拋出異常時,形成難以察覺的資源泄漏。接口
void processWidget(shared_ptr<Widget> pw, int priority); processWidget(new Widget, priority);//error shared_ptr的構造函數是explicit processWidget(shared_ptr<Widget>(new Widget), priority()); //error c++處理參數的次序不固定,並不是從右到左。 shared_ptr<Widget> pw(new Widget); processWidget(pw, priority()); //ok