野指針

 “野指針”是指向“垃圾”內存的指針,而不是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)指針操作超越了變量的作用範圍。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章