函數malloc會給一個指針分配地址空間 ,但是在使用了之後,一定要將此空間用free函數釋放,那麼在釋放後指針的值以及指向的地址空間會發生什麼變化呢:
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
int main()
{
char *ptr = NULL;//現在指針指向位置是NULL
ptr = (char *)malloc(10);//假設分配的內存空間地址爲0x000002ac13d0
strcpy(ptr,"hello\n");
printf(ptr);
printf("0x%p\n",ptr);
printf("0x%016x\n",ptr);
free(ptr);//現在ptr'指向的地址還是0x000002ac13d0
printf("0x%016x\n",ptr);
printf(ptr);
//但是那10個int長的空間已經可能在之後再被malloc分配出去了
}
可見,指針指向的地址空間雖然還是那個,但是該空間的內容已經不再是之前的值了,已經釋放掉了。