Мне известно о нескольких играх, написанных на C ++, но не использующих исключения. Так как обработка ошибки выделения памяти в C ++ обычно строится вокруг std::bad_alloc
исключения, как эти игры справляются с такой ошибкой?
Они просто аварийно завершают работу или есть другой способ обработки и восстановления после ошибки нехватки памяти?
std::terminate
, и это все. Но тогда, с тем же ограничением, распределение может возвращать нулевой указатель вместо исключения, и этот результат может быть проверен и обработан отдельно.
ClassName variableName = new(nothrow) ClassName();
( очевидно, заменяя имя класса, имя переменной и т. Д. ). Затем, если распределение завершится неудачно, вы можете обнаружить это, сказав, if(!variableName)
что ошибка может быть обработана без блока исключения try-catch. Точно так же, если память выделяется с использованием функции , как malloc()
, calloc()
и т.д., то отказы выделить могут быть обнаружены с использованием того же if(!variableName)
метода без необходимости Try-улов. Что касается того, как игры справляются с этими ошибками, ну, на этом этапе, разработчики игры должны решить, сбоит она или нет.