Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
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
1 2 3
実行時またはコンパイル時にエラーがスローされないのはなぜですか?
バッファ オーバーランによって引き起こされるすべてのセキュリティ問題について聞いたことがありますか? Cには自動配列境界チェックがないため、それらが存在します。配列の制限外にアドレス指定しないようにするのはプログラマーの責任であり、コンパイラーはそれをチェックしません。
C は配列の境界をチェックしないため、境界の外に何もアドレス指定しないようにしてください。