指針指向內存free後指針指向哪裏

函數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分配出去了
}

可見,指針指向的地址空間雖然還是那個,但是該空間的內容已經不再是之前的值了,已經釋放掉了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章