爲何delete指針後指針設爲null(已解答)


int *p;
/*。。。。。。。。*/
delete
p; p=null;

  看代碼的過程當中,有這麼一個疑問。刪除了指針p指針p既是不存在,怎麼還能設置指針pnull呢?爲何還要設置爲null呢?安全

  後來得知計算機上刪除數據的方式:刪除數據(視頻,音樂,文件等),計算機並不會把存儲數據的硬盤區域(或者是內存)的內容擦除消去,而是將內容標記爲可覆蓋,這時候咱們就不能再訪問到數據,而這些可覆蓋據數據會留在原來的硬盤區域直到被新的數據逐漸覆蓋。(因此,刪除了數據以後,只要沒有對硬盤進行過多的操做,仍是有可能復原數據的(因此,當我刪除不可告人的東西時就要反覆下載東西填充硬盤嗎?(●ˇ∀ˇ●)))spa

  正題來了,delete p 的含義不是刪除消滅p。而是讓p所指向的地址的內容標記爲可覆蓋。而p=null 則是將指針指向空。指針

  delete p 以後,p指向地址可覆蓋,可是p仍然指向原來的地址,隨着程序的運行,本來內存可能被使用,p指向可能內容改變。因此爲了安全起見,將p指向null。避免p不當心再次被使用。code

  若是直接p=null,而不先 delete p。那麼p的地址不可被覆蓋,形成內存泄漏(內存不能夠再使用)。視頻

這是我對這個問題的理解,若是有什麼不對和補充,歡迎來信息。blog

相關文章
相關標籤/搜索