Estou ciente de vários jogos que são escritos em C ++, mas não usam exceções. Como o tratamento da falha de alocação de memória no C ++ geralmente é criado em torno da std::bad_allocexceção, como esses jogos lidam com essa falha?
Eles simplesmente travam ou existe outra maneira de lidar e se recuperar de um erro de falta de memória?
std::terminate, e é isso. Mas, sob a mesma restrição, a alocação pode retornar um ponteiro nulo em vez de lançar uma exceção, e esse resultado pode ser verificado e tratado separadamente.
ClassName variableName = new(nothrow) ClassName();( obviamente, substituindo o nome da classe, o nome da variável etc. ). Se a alocação falhar, você poderá detectá-lo dizendo if(!variableName)permitindo que o erro seja tratado sem um bloco de exceção try-catch. Da mesma forma, se a memória é alocada usando uma função como malloc(), calloc()etc., as falhas na alocação podem ser detectadas usando o mesmo if(!variableName)método sem a necessidade de uma tentativa de captura. Quanto à forma como os jogos lidam com esses erros, bem, nesse ponto, cabe aos desenvolvedores decidir se ele trava ou não.