什麼是野指標?
例如:
int *p;
或
int *p = new int[1];
int i = 3;
p = &i;
delete p;
像上面的例子所示的,沒有對p申請指定的訪問記憶體區域(也就是說p指標的指向是隨機的,指向的是記憶體空間的隨機位址),或是p 指向乙個已刪除的物件,出現像這樣的指標成為野指標。
野指標的危害:
就是在使用p的時候就沒有辦法通過該指標找到指定的區域對其進行操作,從而會引起整個程式的錯誤。
如何避免野指標?
指標變數一定要初始化為null,因為任何指標變數剛被建立時不會自動成為null指標,它的預設值是隨機的。例如:int *p = null;
當指標p指向的記憶體空間釋放時,沒有設定指標p的值為null。delete和free只是把記憶體空間釋放了,但是並沒有將指標p的值賦為null。
關於 記憶體洩漏,野指標
記憶體洩漏 動態申請的記憶體空間沒有正常釋放,但也不能繼續使用 char a new char a char b new char b a b a 的空間未被釋放,也無法訪問,形成記憶體洩漏 基類的析構函式應設定為virtual,否則基類指標指向子類物件,呼叫基類析構時不會呼叫子類的析構函式,而造成...
什麼是野指標?野指標的危害?如何避免野指標?
什麼是野指標?野指標是指隨機指向一塊記憶體的指標 野指標的危害?如何避免野指標?我們要在以後養成良好的編碼習慣 1.將沒有指向的指標初始化指向null 指向null的指標不能對他的指向進行修改 2.當想給乙個指標指向的空間賦值時,一定要給這個指標分配空間 malloc 3.當空間分配完後,要檢查這個...
什麼是野指標?如何避免野指標?
野指標不是 null指標,它是隨即指向一塊記憶體的指標。野指標是很危險的,會導致記憶體洩漏,if語句對它不起作用。導致野指標的原因有兩種 1 野指標指向了一塊沒有訪問許可權的記憶體。即指標沒有初始化 2 野指標指向了乙個已經釋放的記憶體。因為野指標是因為我們的不良程式設計習慣造成的,所以我們養成良好...