1
int main()
{
    int a[2] = {1,2};
    a[2] = 3;
    printf("\n\n%d  %d  %d\n\n",a[0],a[1],a[2]);
    return 0;
}

次のように出力されます1 2 3

実行時またはコンパイル時にエラーがスローされないのはなぜですか?

4

3 に答える 3

13

バッファ オーバーランによって引き起こされるすべてのセキュリティ問題について聞いたことがありますか? Cには自動配列境界チェックがないため、それらが存在します。配列の制限外にアドレス指定しないようにするのはプログラマーの責任であり、コンパイラーはそれをチェックしません。

于 2013-08-16T04:48:31.690 に答える
0

C は配列の境界をチェックしないため、境界の外に何もアドレス指定しないようにしてください。

于 2013-08-16T05:16:00.073 に答える