配列にメモリを割り当てるために、次のコードを書きました。
try {
int n = 0;
cin >> n;
double *temp = new double[n];
...
}
catch(exception& e) {
cout << "Standard exception: " << e.what() << endl;
exit(1);
}
もちろん、負の値などについて n をチェックしていますが、536*(10^6) を超える大きな数値を入力すると、不正な割り当て例外は発生しませんが、「無効な割り当てサイズ: 4294967295 バイト」クラッシュが発生します。
EG n = 536*(10^6) と入力 --> 不良割り当て例外 n = 537*(10^6) と入力 --> 無効な割り当てサイズ: 4294967295 バイト --> クラッシュ
なぜこれが起こっているのですか?