Mir sind einige Spiele bekannt, die in C ++ geschrieben sind, aber keine Ausnahmen verwenden. std::bad_alloc
Wie gehen diese Spiele mit einem solchen Fehler um, da die Behandlung von Speicherzuweisungsfehlern in C ++ im Allgemeinen um die Ausnahme herum aufgebaut ist ?
Stürzen sie einfach ab, oder gibt es eine andere Möglichkeit, mit einem Fehler aufgrund von Speichermangel umzugehen und ihn zu beheben?
std::terminate
, und das war's. Unter derselben Einschränkung kann die Zuweisung jedoch einen Nullzeiger zurückgeben, anstatt eine Ausnahme auszulösen, und dieses Ergebnis kann separat überprüft und behandelt werden.
ClassName variableName = new(nothrow) ClassName();
( Klassennamen, Variablennamen usw. offensichtlich ersetzen ). Wenn die Zuordnung fehlschlägt, können Sie dies erkennen, indem Sie sagen, if(!variableName)
dass der Fehler ohne einen Try-Catch-Ausnahmeblock behandelt werden kann. Ebenso, wenn der Speicher eine Funktion wie zugeteilt verwendet malloc()
, calloc()
usw., dann können Ausfälle zuzuteilen detektierenden Verwendung derselben if(!variableName)
Methode ohne eine try-catch zu benötigen. Was den Umgang der Spiele mit diesen Fehlern angeht, ist es nun an den Spielentwicklern zu entscheiden, ob sie abstürzen oder nicht.