在通過free()函數釋放指針內存之后講其指針置空,這樣可以避免后面的程序對與該指針非法性的判斷所造成的程序崩潰問題。釋放空間,指針的值並沒有改變,無法直接通過指針自身來進行判斷空間是否已經被釋放,將指針置空有助於判斷一個指針所指向的空間已經被釋放。
內存泄露:
例如:int *p = (int *)malloc(sizeof(int)),如果在用p只想其他地址,則原本malloc()分配的地址便找不到了,造成內存泄露的后果。
free(p)后,p是一個非法指針,不可以對他進行訪問。為了防止忘記對釋放內存后的指針的置空,可以在函數的開頭宏定義一個函數
#define free(p)
if(p)
{
free(p);
p = NULL;
}