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_alloc
excepció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.