int main()
{
int *p,*q;
p=(int *)malloc(sizeof(int));
*p=5;
free(p);
}
当我在执行p
语句后检查分配给free(p)
的内存地址时,我发现内存内容为0.这是正确的行为,因为我已经读过{{1没有将内存初始化为0?
答案 0 :(得分:3)
*p
返回后free(p)
的内容未定义。它可能是0,42或其他任何东西。
#include <stdlib.h>
#include <stdio.h>
int main(void) {
int *p, *x;
p = malloc(sizeof(int));
*p = 5;
// the following will print "0x7fd0cac00350: 5" or similar
printf("%p: ", p);
printf("%d\n", *p);
free(p);
printf("%p\n", p); // won't change from before
printf("%d\n", *p); // UNDEFINED BEHAVIOR
}