free() 将内存初始化为 0
free() initialising memory to 0
int main()
{
int *p,*q;
p=(int *)malloc(sizeof(int));
*p=5;
free(p);
}
当我在执行 free(p)
语句后检查分配给 p
的内存地址时,我观察到内存内容为 0。这是正确的行为吗,因为我已阅读 free
不初始化内存为0?
free(p)
returns之后*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
}
int main()
{
int *p,*q;
p=(int *)malloc(sizeof(int));
*p=5;
free(p);
}
当我在执行 free(p)
语句后检查分配给 p
的内存地址时,我观察到内存内容为 0。这是正确的行为吗,因为我已阅读 free
不初始化内存为0?
free(p)
returns之后*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
}