Sono a conoscenza di diversi giochi che sono scritti in C ++ ma non usano eccezioni. Poiché la gestione dell'errore di allocazione della memoria in C ++ si basa generalmente std::bad_alloc
sull'eccezione, in che modo questi giochi gestiscono tale errore?
Si arrestano semplicemente in modo anomalo o esiste un altro modo per gestire e ripristinare un errore di memoria insufficiente?
std::terminate
e basta. Tuttavia, con la stessa restrizione, l'allocazione può restituire un puntatore null invece di generare un'eccezione e quel risultato può essere verificato e gestito separatamente.
ClassName variableName = new(nothrow) ClassName();
( ovviamente sostituendo il nome della classe, il nome della variabile, ecc. ) Quindi, se l'allocazione fallisce, puoi rilevarla dicendo che if(!variableName)
consente di gestire l'errore senza un blocco di eccezioni try-catch. Allo stesso modo, se la memoria viene allocata utilizzando una funzione come malloc()
, calloc()
ecc., Gli errori da allocare possono essere rilevati usando lo stesso if(!variableName)
metodo senza bisogno di un try-catch. Per quanto riguarda il modo in cui i giochi gestiscono questi errori, beh, a quel punto, spetta agli sviluppatori del gioco decidere se si blocca o meno.