我想了解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()实际上做了什么?
答案 0 :(得分:0)
它释放内存,但由于C会让你自己在脚下射击,指针仍然指向释放的内存块。以任何方式使用它都会调用未定义的行为