“野指針”是指向“垃圾”內存的指針,而不是NULL指針。我們一般不會錯用NULL指針,因爲用if語句很容易判斷。但是“野指針”是很危險的,if語句對它不起作用。
“野指針”的成因有三種:
(1),指針變量沒有被初始化。任何指針變量剛被創建時不會自動成爲NULL指針,它的默認值是隨機的,也就是說它會指向內存中的一個隨機的位置。所以,指針變量在創建的同時應當被初始化,要麼將指針設爲NULL,要麼給它分配內存,使其指向合法的內存。例如:
char *p = NULL;
char *p = new char[100];
(2),使用free 和 delete釋放掉爲指針分配的內存之後,沒有將指針設置爲NULL,從而使該指針成爲指向“垃圾”內存的“野指針”。所以釋放內存之後必須將指針設置爲NULL ,如下所示:
delete p;
p = NULL;
(3)指針操作超越了變量的作用範圍。