1. 程式人生 > >區分零值指針,NULL指針,野指針

區分零值指針,NULL指針,野指針

C/C++

零值指針:是值是0的指針,沒有存儲任何內存地址的指針,可以是任何一種指針類型,可以是通用變體類型void也可以是char,int*等等。

空指針:NULL 是一個標準規定的宏定義,用來表示空指針常量,其實空指針只是一種編程概念,就如一個容器可能有空和非空兩種基本狀態,而在非空時可能裏面存儲了一個數值是0,因此空指針是人為認為的指針不提供任何地址訊息。
在C++裏面我們認為0指針就是空指針

野指針
:指向垃圾內存的指針,與空指針不同,野指針無法通過簡單地判斷是否為 NULL避免,而只能通過養成良好的編程習慣來盡力減少。對野指針進行操作很容易造成程序錯誤。
野指針產生的原因:
(1)指針變量沒有初始化,任何指針變量剛被創建時不會自動成為NULL指針,它的缺省值是隨機的;

(2)指針被delete或者free之後沒有置為空,讓人誤以為該指針是合法的
(3)指針操作超越了變量的範圍。不要返回指向棧內存的指針或引用,因為棧內存在函數結束時會被釋放。

區分零值指針,NULL指針,野指針