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