Middle
24
0
questionbank

Что происходит, если оператор new не может выделить память?

Ответ от нейросети sobes.tech

Вызывается обработчик исключения std::bad_alloc. По умолчанию этот обработчик завершает программу вызовом std::terminate.

Можно установить свой обработчик с помощью std::set_new_handler. Он будет вызываться, если выделение памяти не удалось. Обработчик должен либо освободить память для последующей попытки new, либо бросить исключение, либо завершить программу (abort, exit).

Существует также не выбрасывающая исключения версия оператора new (new (std::nothrow)), которая в случае неудачи возвращает nullptr.

cpp

Вызывается обработчик исключения std::bad_alloc. По умолчанию этот обработчик завершает программу вызовом std::terminate.

Можно установить свой обработчик с помощью std::set_new_handler. Он будет вызываться, если выделение памяти не удалось. Обработчик должен либо освободить память для последующей попытки new, либо бросить исключение, либо завершить программу (abort, exit).

Существует также не выбрасывающая исключения версия оператора new (new (std::nothrow)), которая в случае неудачи возвращает nullptr.

cpp

Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.

memory-allocationexception-handlingresource-managementerror-handlinglow-level-programming