关于LINUX中的分段错误

时间:2012-05-05 18:48:22

标签: c linux segmentation-fault printf token

我正在做LINUX中开发SIC / XE汇编程序的作业。

当我制作代码时,我遇到了一些错误,但我不知道为什么会这样。你能解释一下为什么会出现这个问题吗?

以下代码显示带有令牌的'test.asm'文件。

178             printf("token1: %s \t",token1);
179             printf("token2: %s \t",token2);
180             printf("token3: %s \t",token3);
181             printf("token4: %s \t",token4);
182             printf("ss\nss");

据此,尤其是“ss \ nss”声明,我期待打印出如下的结果。

    sstoken1: LDT   token2: LENGTH  token3: (null)  token4: (null)  ss
    sstoken1: WLOOP         token2: TD      token3: OUTPUT  token4: (null)  ss
    ss

然而,当我运行这个程序直到最后,我遇到了分段错误并遇到了奇怪的情况。

sstoken1: OUTPUT        token2: BYTE    token3: X'05'   token4: (null)  ss
sstoken1: END   token2: FIRST   token3: (null)  token4: (null)  ss
Segmentation fault.

“分段错误”声明之前没有“ss”。我无法理解为什么。你能帮我解释一下吗?

1 个答案:

答案 0 :(得分:1)

我认为它是通过在stdout冲洗之前被SEGV杀死的进程打印出来的。尝试添加:

fflush(stdout);

在printf声明之后。