【发布时间】:2014-10-21 21:29:14
【问题描述】:
我在 Linux 上编写应用程序时遇到了严重问题。 我有这个代码
#include <stdio.h>
int main()
{
char ar[10][10];
strcpy(ar[1], "asd");
strcpy(ar[2], "fgh");
int test[2];
test[1] = (int)ar[1];
printf("%s %x | %s %x\n\n", ar[1], ar[1], test[1], test[1]);
return 0;
}
它在 Windows 上运行良好,但是当我想在 Linux 上运行它时,我得到了 分段错误或未经授权访问内存。
【问题讨论】:
-
你的程序有未定义的行为,这基本上意味着程序可以做任何事情,包括按预期工作。阅读Undefined Behavior and Sequence Points 和What every C programmer should know about Undefined Behaviour
-
@Blue:我看不出序列点与这个讨论有什么关系;在没有干预序列点的情况下多次修改变量导致这里没有未定义的行为。