空懸指標和野指標

2022-07-31 21:15:13 字數 339 閱讀 5026

以前經常把這兩個概念混為一談,雖然這它們的概念類似,有一定的相似性,但是各自的成因和解決防範方法都是不同的,特記錄在此。

乙個原生指標分配記憶體後,它並沒有探測記憶體是否已經被釋放或者被損壞的能力。當所管理的記憶體被釋放後,若這個指標沒有被銷毀或置為null,它就成了乙個空懸指標。

可能會出現隨機的錯誤,甚至導致程式崩潰,而且這種問題一般很難定位,特別是在大型工程裡。

使用weak_ptr和shared_ptr配套可以解決「不知道物件是否還活著」的問題。

沒有初始化過的指標,可能被編譯器隨機賦值

基本同上

盡量避免使用原生指標,使用智慧型指標代替它,如果必須使用,在一定要初始化它。

C 空懸指標 野指標

指向已經被釋放的記憶體 或者 指向已經被銷毀的物件。情況一 變數c釋放,dp變成空懸指標 情況二 void func 當free或者delete呼叫時,除了釋放動態申請的記憶體,還要將相關的指標指向null,避免出現空懸指標 情況三 int func void num是基於棧的變數,當func函式返...

空指標和野指標

關於多次free 出現的野指標的原因 指標變數和指標變數所指的記憶體空間變數是兩個不同的概念 free 最主要釋放的指標變數所指的記憶體空間,因為記憶體資源是有限的,很寶貴,需要 利用 但是指標變數本身的值還是之前的指向,未重置成null 所以再次釋放的時候,指向了未知的記憶體區域,產生野指標 避免...

野指標和空指標

1.是取位址符號,是公升維度的,取其右邊變數的位址,如 d取變數d的位址。是取值符號 間接訪問 是降維度的,表示右邊指標變數所指向的變數,如 p表示指標變數p所指向的變數 2.float p d 則 p是變數d,而 p是變數p 即變數d 的位址p,p等價於p.3.在定義指標型別一定要和變數的型別對應...