读书人

在linux+gdb上面发现一个bug

发布时间: 2012-12-29 10:28:09 作者: rapoo

在linux+gdb下面发现一个bug

#include<stdio.h>

int main()
{
char arr[0];
arr[0]='a';
printf("%c\n",arr[0]);
return 0;
}

编译不出错,运行结果可以打印a
[解决办法]

引用:
引用:C99柔性数组,已经越界了吧?能打印属于侥幸。那个地方越了?



关于gcc柔性数组,请看这篇文章。

测试一下就知道了。
$cat test.c
#include <stdio.h>
int main()
{
char a[0];
char b = 'b';
a[0] = 'a';
printf("b = %c\n", b);
return 0;
}
$gcc test.c
$./a.out
b = a
$


[解决办法]
越界以后,行为未定义
[解决办法]
GNU C允许0标号数组

读书人网 >C语言

热点推荐