在用free()函數釋放指針內存時為何要將其指針置空


在通過free()函數釋放指針內存之后講其指針置空,這樣可以避免后面的程序對與該指針非法性的判斷所造成的程序崩潰問題。釋放空間,指針的值並沒有改變,無法直接通過指針自身來進行判斷空間是否已經被釋放,將指針置空有助於判斷一個指針所指向的空間已經被釋放。

內存泄露:

  例如:int *p = (int *)malloc(sizeof(int)),如果在用p只想其他地址,則原本malloc()分配的地址便找不到了,造成內存泄露的后果。

free(p)后,p是一個非法指針,不可以對他進行訪問。為了防止忘記對釋放內存后的指針的置空,可以在函數的開頭宏定義一個函數

#define free(p)

  if(p)

{

free(p);

p = NULL;

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM