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_alloc
exceçã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.