我不确定为什么我得到的值是 3490,即使作者说 *p = 3490 应该是错误,因为我们是在 free() 之后执行的。有什么想法吗?
#include <stdio.h>
#include <stdlib.h>
int main()
{
// Allocate space for a single int (sizeof(int) bytes-worth):
int *p = malloc(sizeof(int));
*p = 12; // Store something there
printf("%d\n", *p); // Print it: 12
free(p); // All done with that memory
*p = 3490; // ERROR: undefined behavior! Use after free()!
printf("%d\n", *p); // Print it: 3490
}
我尝试编译,值仍然显示。我没有看到任何未定义的行为。
应该是错误...*p = 3490
不。
*p = 3490
是 未定义行为 (UB),因为 p
中的值在释放后无效。任何事情都可能发生。