野指針就是指針指向的位置是不可知的(隨機的、不正確的、沒有明確限制的)指針變量在定義時如果未初始化,其值是隨機的,指針變量的值是別的變量的地址,意味着指針指向了一個地址是不確定的變量,此時去解引用就是去訪問了一個不確定的地址,所以結果是不可知的。
任何指針變量剛被創建時不會自動成為NULL指針,它的缺省值是隨機的,它會亂指一氣。所以,指針變量在創建的同時應當被初始化,要麼將指針設置為NULL,要麼讓它指向合法的內存。如果沒有初始化,編譯器會報錯“ ‘point’ may be uninitializedin the function ”。
野指針是指向不可用內存的指針,當指針被創建時,指針不可能自動指向NULL,這時,默認值是隨機的,此時的指針成為野指針。
當指針被free或delete釋放掉時,如果沒有把指針設置為NULL,則會產生野指針,因為釋放掉的僅僅是指針指向的內存,並沒有把指針本身釋放掉。
第三個造成野指針的原因是指針操作超越了變量的作用範圍。