Conozco varios juegos que están escritos en C ++ pero no usan excepciones. Dado que el manejo de la falla de asignación de memoria en C ++ generalmente se basa en la std::bad_allocexcepción, ¿cómo manejan estos juegos tal falla?
¿Simplemente se bloquean o hay otra forma de manejar y recuperarse de un error de falta de memoria?
std::terminate, y eso es todo. Pero luego, bajo la misma restricción, la asignación puede devolver un puntero nulo en lugar de lanzar una excepción, y ese resultado se puede verificar y manejar por separado.
ClassName variableName = new(nothrow) ClassName();( obviamente, reemplazar el nombre de la clase, el nombre de la variable, etc. ) Luego, si la asignación falla, puede detectarlo diciendo que if(!variableName)permite que el error se maneje sin un bloque de excepción try-catch. Del mismo modo, si la memoria se asigna usando una función como malloc(), calloc()etc., entonces las fallas de asignación se pueden detectar usando el mismo if(!variableName)método sin necesidad de un try-catch. En cuanto a cómo los juegos manejan estos errores, bueno, en ese punto, depende de los desarrolladores del juego decidir si se bloquea o no.