#include<stdio.h>
#include<stdlib.h>
int main()
{
int *p;
p=(int *)malloc(sizeof(int));
*p=2;
printf("%d,%p\n",*p,p);
free(p);
printf("%d,%p\n",*p,p);
*p=1;
printf("%d,%p\n",*p,p);
return 0;
}
结果为:
在MinGW Developer Studio中:
2,003E3BE8
0,003E3BE8
1,003E3BE8
在VC6.0中:
2,00380FE0
-572662307,00380FE0
1,00380FE0
问题是:为什么用free函数释放了内存后,仍能对*p赋值?并且运行时也没发生错误?