C语言中:static char str[1]和char str[1]的区别
C语言中:
第一段代码
static char str[1];
gets(str);
puts(str);
运行后,输入abcdef,输出abcdef,不报错。
第二段代码
char str[1];
gets(str);
puts(str);
运行后,输入abcdef,就报错。
现在不明白 为什么 加上static后 就不报错呢 而且能正确接受 "abcdef "
多谢
[解决办法]
实际上两个都是内存溢出.
只是第一个的空间在静态数据区,你溢出后的数据没影响到其他的数据,故不报错.
第二个在栈区,你的溢出数据可能覆盖了其他的有用数据.就会产生段错误.