Middle
30
0
questionbank

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

Answer from sobes.tech neural network

Вызывается обработчик исключения 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

Register or sign in to get access to full answers for all questions from the question bank.

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