C/Cpp / 野指针和悬空指针
生活随笔
收集整理的這篇文章主要介紹了
C/Cpp / 野指针和悬空指针
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、定義
二、危害
由于指向的是不安全不可控的區域,任何情況都有可能發生,比如:崩潰、執行結果錯誤、系統崩潰等。
三、如何避免
傳統方法:每一個指針必須初始化為 null,可以避免 野指針 的產生。但是對于懸空指針來說就比較難處理,只能每次 delete 內存之后將指針置為 null,但是其他指向該內存的指針如果有遺漏沒有置為 null 的則很容易造成懸空指針。
現代 C++ 基本上沒有了上述問題,使用容器 shared_ptr 。該容器初始化時就將指針置為了 null,這樣就避免了野指針;傳入內存地址之后,智能指針析構時判斷該內存塊的引用計數,如果為 0 則自動釋放內存,因為不會有真正的裸指針在代碼中,也就無從談起懸空指針,所有對指針的操作都是對對象(容器)而非指針,這樣就避免了懸空指針的存在。
?
(SAW:Game Over!)
總結
以上是生活随笔為你收集整理的C/Cpp / 野指针和悬空指针的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cpp / shared_ptr
- 下一篇: 通信 / HTTP 详解