我想了解c中的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() 实际上做了什么?
最佳答案
它会释放内存,但由于 C 会让你搬起石头砸自己的脚,因此指针仍然指向已释放的内存块。以任何方式使用它都会调用未定义的行为
关于c - 使用 free() 释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39941793/