一般來說,執行語句:
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的,也同樣不用釋放,系統...