可能是重复问题:
malloc()和free()的工作原理
#include <stdio.h>
#include <stdlib.h>
int * alloc()
{
int *p = (int *)calloc(5,4);
printf("%d\n",p);
return p;
}
int main()
{
int *p = alloc();
free(p);
printf("%d\n",p);
p[0] = 1;
p[1] = 2;
printf("%d %d\n",p[0],p[1]);
}
就这段代码而言,我首先分配了5个整型变量的内存空间。然后我释放了这部分内存。 当我使用printf输出p的值时,为什么p的值仍然等于这段内存空间的起始地址? 同时我也可以给p[0]和p[1]赋值。这是否意味着free()没有做任何事情?一旦我分配了内存,即使我已经释放它,我以后还可以使用它。