条款13:以对象管理资源
生活随笔
收集整理的這篇文章主要介紹了
条款13:以对象管理资源
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先考慮一個工廠函數
Investment * createInvestment(); void f() {Investment * pInv = createInvestment();...delete pInv; }至少上面這個函數是不安全的,例如如果...里面包含return語句的話,
或者說...里面包含可能會拋出異常的語句。那么就會導致申請的內存得不到釋放。
而下面就說明了管理對象的一般方法:
用對象來進行管理,這樣在離開作用域的時候申請的內存便會自動得到釋放。
注意這里包含有兩個關鍵的想法:
1. 獲得資源之后應該把他們立刻放到管理對象里面。
2. 管理對象可以利用析構函數使得資源正確的被釋放。
注意,shared_ptr等智能指針不能對內置的數組進行管理,因為他們在自己的析構函數里面調用的是
小結:
1. 為防止資源泄露,應該使用RAII對象,他們在構造函數中獲得資源,而在析構函數里面釋放資源。
2. auto_ptr不能用在多個指針指向同一個對象的場合。
轉載于:https://www.cnblogs.com/-wang-cheng/p/4856320.html
總結
以上是生活随笔為你收集整理的条款13:以对象管理资源的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Swift - final关键字的介绍,
- 下一篇: Memcached服务器的图形化管理工具