次の2つの番組セグメントを見てください:今アレイランタイムで宣言とコンパイル時間
int a,b;
cin>>a>>b;
int arr1[a*b];
int arr2[a];
をiが '= 100000と「B」= 5の入力値を与える場合は、プログラムは、実行時エラー理由を示しますメモリオーバーフローの私は思う。今コードの他のセグメントに見える:上記のコードに示すように、私は同じサイズの配列を宣言するとき
int arr1[500000];
int arr2[100000];
は今、プログラムが正常に動作します。どうしてこんなことに?
可変長配列はC++でサポートされていません:あなたは実行時に割り当てられ、そのようなことをする必要がある場合は
は、慣用的なC++の方法は、
std::vector
使用することです。 – haccks@ haccksが言ったこと。 Cスタイルの配列と 'std :: array'サイズはコンパイル時に知っておかなければなりません。 'std :: vector'を使うか、配列を動的に割り当てることができます。 – Gambit
* "メモリオーバーフローのため実行時エラーが表示される"と思う "* - エラーメッセージを言い換えないでください。それを質問に追加するには、コピー&ペーストを使用します。 –