【问题标题】:about segmentation fault in LINUX关于 LINUX 中的分段错误
【发布时间】:2012-05-14 22:45:51
【问题描述】:

我正在做一个在 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.

“Segmentation fault”语句之前没有“ss”。我不知道为什么。请给我解释一下好吗?

【问题讨论】:

    标签: c linux segmentation-fault printf token


    【解决方案1】:

    我相信它是由 SEGV 在刷新标准输出之前杀死的进程打印的。尝试添加:

    fflush(stdout);
    

    在 printf 语句之后。

    【讨论】:

    • 是的,你是正确的老虎!我发现这不是错误本身,但被省略了。我没有弄清楚为什么会发生这种情况,但我知道这不是问题本身。谢谢!
    猜你喜欢
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    相关资源
    最近更新 更多