【发布时间】:2014-09-28 14:27:50
【问题描述】:
这个应该很简单.. 我在 C 中有以下代码:
#include <stdio.h>
#include <string.h>
main()
{
printf("Got to 1\n");
char *str;
*str='a';
printf("*str contains: %c",*str);
}
在看到 Segmentation Fault (core dumped) 错误之前,我没有打印出“Got to 1”行。 谁能解释这个错误背后的原因?
【问题讨论】:
-
指针没有指向任何东西,所以你正在为内存中的一个随机位置分配一个值。
-
它肯定会在屏幕上打印“Got to 1”。
-
@ani 可能会也可能不会。输出被缓冲,崩溃可能会阻止缓冲区被正确刷新。
-
@Ani,如果任何部分是未定义的行为,则所有赌注都将关闭。未定义的行为包括time travel。还有optimizations.
-
OP 使用的是
\n,所以它肯定会在屏幕上打印“Got to 1”。