空懸指針是這樣一種指針:指針正常初始化,曾指向過一個正常的對象,但是對象銷毀了,該指針未置空,就成了懸空指針。
野指針是這樣一種指針:未初始化的指針,其指針內容為一個垃圾數。 (一般我們定義一個指針時會初始化為NULL或者直接指向所要指向的變量地址,但是如果我們沒有指向NULL或者變量地址就對指針進行使用,則指針指向的內存地址是隨機的)。存在野指針是一個嚴重的錯誤。
int main() { int *p; // 指針未初始化,此時 p 為野指針 int *pi = nullptr; { int i = 6; pi = &i; // 此時 pi 指向一個正常的地址 *pi = 8; // ok } *pi = 6; // 由於 pi 指向的變量 i 已經銷毀,此時 pi 即成了懸空指針 return 0; }