【发布时间】:2016-03-18 06:02:57
【问题描述】:
#include <stdio.h>
int main(void){
char *temp = malloc(11);
strcpy(temp, "123456789");
free(temp);
printf("%c\n", *temp);
return 0;
}
在上面的代码中,为什么我在访问尚未分配的内存时不会出现分段错误。而且打印出来的字符是空的?不应该是1吗?
【问题讨论】:
-
您是在要求我们定义未定义的行为吗?
-
未定义行为是未定义的行为,任何事情都可能在它被调用后发生。避免它。
-
它可以是任何东西。无法保证触发 UB 后的输出。
-
所以分段错误可能发生也可能不发生?
-
没错,你的磁盘可能会被格式化,或者盒子会烧掉...... ;-)
标签: c segmentation-fault malloc free