だから私のコードは
#include <stdio.h>
#include <string.h>
int main()
{
const char *a="123456789abcdef";
char b[10];
int i=0;
while((b[i]=a[i])!='\0')
++i;
printf("%s, %d\n",b,strlen(b));
return 0;
}
コードには配列 b の配列オーバーフローが存在しますが、私のシステム (64 ビット ubuntu 12.04 lts) で gcc (バージョン 4.6.3) を使用してコンパイルすると、成功します。
このプログラムの出力は123456789abcdef, 15で、
戻り値 0 はこのプログラムが正常に終了したことを意味します。
コンパイラの問題なのか、システムの問題なのかわかりません。誰か教えてもらえますか? PS gcc を使用する 64 ビット Linux でのみ表示されるようです。これはバグですか?