Я написал следующий фрагмент кода для выделения памяти для массива:
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), я получаю не исключение bad-alloc, а сбой «Недопустимый размер выделения: 4294967295 байт».
НАПРИМЕР. Я ввожу n = 536*(10^6) --> исключение bad-alloc Я ввожу n = 537*(10^6) --> Недопустимый размер выделения: 4294967295 байт --> Сбой
Есть идеи, почему это происходит?
cout<<n
послеcin>>n
, чтобы убедиться в этом? - person barak manos   schedule 05.05.2014double
вы выделяете, вот почему. 536*(10^6) * sizeof(double) превышает 4294967295. - person barak manos   schedule 05.05.2014