Je connais plusieurs jeux qui sont écrits en C ++ mais n'utilisent pas d'exceptions. Étant donné que la gestion des échecs d'allocation de mémoire en C ++ est généralement construite autour de l' std::bad_alloc
exception, comment ces jeux gèrent-ils un tel échec?
Se bloquent-ils simplement ou existe-t-il un autre moyen de gérer et de récupérer après une erreur de mémoire insuffisante?
std::terminate
, et c'est tout. Mais sous la même restriction, l'allocation peut renvoyer un pointeur nul au lieu de lever une exception, et ce résultat peut être vérifié et géré séparément.
ClassName variableName = new(nothrow) ClassName();
( évidemment en remplaçant le nom de classe, le nom de variable, etc. ) Ensuite, si l'allocation échoue, vous pouvez la détecter en disant de if(!variableName)
permettre à l'erreur d'être gérée sans bloc d'exception try-catch. De même, si la mémoire est allouée à l' aide d' une fonction comme malloc()
, calloc()
, etc., puis les échecs d'affecter peut être détectée en utilisant la même if(!variableName)
méthode sans avoir besoin d' un try-catch. Quant à la façon dont les jeux gèrent ces erreurs, eh bien, à ce stade, il appartient aux développeurs du jeu de décider s'il se bloque ou non.