Выражение new
в блоке try
вызывает на моем компьютере исключение bad_alloc
.
Обратите внимание, что предложение catch получает объект исключения по значению, а не по ссылке. Почему e.what ()
печатает «плохое распределение»
? Я думал, что это будет разрезано.
#include <iostream>
int main()
{
try
{
int* p = new int[0x1F000000];
}
catch(std::exception e)
{
std::cout << e.what() << std::endl;
}
}