首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

在linux+gdb上面发现一个bug

2012-12-29 
在linux+gdb下面发现一个bug#includestdio.hint main(){char arr[0]arr[0]aprintf(%c\n,arr[0])

在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标号数组

热点排行
Bad Request.