使用free()释放内存

时间:2016-10-09 09:00:58

标签: c memory-management free

我想了解c deallocates内存中的free(),或者它只是通过malloc擦除已分配内存中的数据。

#include<stdio.h>
#include<stdlib.h>

int main()
{
    int n;
    printf("enter the size of n:\n");
    scanf("%d", &n);
    int* A=(int*)malloc(5*sizeof(int));
    int i;
    for(i=0; i<n; i++)
    {
        printf("%d\n", &A[i]);
    }

    free(A);

    printf("\n\n-------------\n\n");

    for(i=0; i<n; i++)
    {

        printf("%d\n", &A[i]);
    }

    return 0;
}

仍然在释放A后给出相同的A地址。 free()实际上做了什么?

1 个答案:

答案 0 :(得分:0)

它释放内存,但由于C会让你自己在脚下射击,指针仍然指向释放的内存块。以任何方式使用它都会调用未定义的行为