为什么以下代码在MinGW GCC 4.7.2上“起作用”,并且在GCC上不起作用(而不是相反)?
#include<stdio.h>
int main() {
char *str;
gets(str);
return 0;
}
提前致谢。 吉姆。
答案 0 :(得分:1)
上面的代码有未定义的行为:您没有初始化str
并且您将其不确定的值传递给gets
。所以gets
可能最终会乱写到记忆中的某个随机位置。
这就是你的代码工作(对于某些工作定义)在MinGW-gcc 4.7.2而不是另一个的原因 - 因为未定义的行为意味着任何事情都可能发生,包括你所看到的