delete指標後應該將指標賦值為NULL

2021-07-27 11:39:39 字數 509 閱讀 6155

一般來說,執行語句:

int *p = new

int(1);

delete p;

之後,指標指向的記憶體空間已經釋放了,該指標已經沒有」實權」了,但是該指標還是存在,並沒有消失,而且指向的位址也沒有改變,這是對這個指標的任何操作都是危險的,很容易發生程式錯誤,這時候的p就是乙個野指標,比如再次執行delete p操作,會使程式崩潰,即:

int *p = new

int(1);

delete p;

delete p;

在vs2015下能夠通過編譯,一旦執行便馬上崩潰。

良好的習慣是在delete之後,隨後將該指標置null,這時候發生delete p操作不至於使程式崩潰,因為c++允許delete 空指標。

int *p = new

int(1);

delete p;

p = null;

C 指標delete後需要做

c 標準規定 delete空指標是合法的,沒有 所以我們一般在delete後就以為萬事大吉了,其實這是不安全的。我們在delete指標後賦值為null或0是個好習慣。對乙個非空指標delete後,若沒有賦null,若再次delete的話 有可能出現問題。如下 可以看出delete是釋放指標指向的記憶...

使用delete刪除指標

原文 用delete命令處理某個指標,說是把那個指標刪除了是不正確的。delete命令指示釋放了那個指標原本所指的那部分記憶體而已。被delete後的指標p的值 位址值 並非就是null,而是隨機值。也就是被delete後,如果不再加上一句p null,p就成了 野指標 在記憶體裡亂指一通。如果在定...

c 定義指標 delete

c 無論何種資料,是否要delete關鍵看其空間是否使用new分配的。1,函式衝定義的區域性變數指標,單純是乙個區域性變數是不用delete 2,c 如果類中有乙個指標資料成員,而沒有用new,析構函式也是不用delete的 在類或函式中,int char 這些只要不是new的,也同樣不用釋放,系統...