在linux+gdb下面发现一个bug
#include<stdio.h>
int main()
{
char arr[0];
arr[0]='a';
printf("%c\n",arr[0]);
return 0;
}
编译不出错,运行结果可以打印a
[解决办法]
关于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标号数组