なぜ私は最初のメインが実行中にクラッシュしなかったのか知りたいが、2番目のメインは実際に実行中にクラッシュする。C++の配列オーバーフロー
int main(){
int a[5];
for(int i = 0; i < 70; i++){
cout << i << "=" << a[i] << endl;
}
return 0;
}
int main(){
int a[5];
cout << a[6];
return 0;
}
未定義の動作。もっと不思議に思う必要はありません。それは何でもできます。 –
未定義のビヘイビアは何ですか? –
定義されていない動作。この規格では、配列の内部にアクセスする際の動作のみを定義しています。それを超えてアクセスすると、何も起こりませんし、仕様書には何も言われません。クラッシュは単なる選択肢です。 –