iは、配列A [10]といくつかの他の変数コアダンプが、GDBはその正確な場所
を持っているそして、あなたが実行したとき、私はそう
for(int i=0;i<20;i++) //intentionally 20
A[i]=0;
として、それを初期化していますと言うことができます見つけることができませんこのライブラリ、それはエラーなしで配列を初期化し、アクセスも可能ですが、gdbは他の場所でコアダンプを与えます(私の場合は、他の変数のメモリが変更されています)
なぜ与えられないのですか?配列の初期化中のコアダンプ
外出すると、ときどきうまくいくように見えるかもしれない[*未定義の動作*](http://en.cppreference.com/w/cpp/language/ub)それはしない)。あなたがUBを持っているなら、プログラムの残りの部分の振る舞いについて推測することはありません。 –
このような問題を見つける方法については、メモリデバッガ(例:[Valgrind](http://valgrind.org/)など)を使用することを検討してください。 GCCには、実行時に境界チェックを追加するオプションがあると思います。 –
gccとclangを使用すると境界検査にアドレスサニタイザを使うことができます:オプションをコンパイルするには '-fsanitize = address'を、リンクオプションには '-lasan'を追加する必要があると思います。 –