使用gcc 4.8.1和Mingw gcc 4.7.2进行字符串操作

时间:2014-12-18 20:19:49

标签: c mingw

为什么以下代码在MinGW GCC 4.7.2上“起作用”,并且在GCC上不起作用(而不是相反)?

 #include<stdio.h>

 int main() {
   char *str; 
   gets(str);
   return 0;
 }

提前致谢。 吉姆。

1 个答案:

答案 0 :(得分:1)

上面的代码有未定义的行为:您没有初始化str并且您将其不确定的值传递给gets。所以gets可能最终会乱写到记忆中的某个随机位置。

这就是你的代码工作(对于某些工作定义)在MinGW-gcc 4.7.2而不是另一个的原因 - 因为未定义的行为意味着任何事情都可能发生,包括你所看到的