(7) Attenzione alle condizioni di out of memory.
Se l'operatore new non può allocare memoria come richiestogli genera un'eccezione.
Però non é piacevole pensare di dover usare blocchi try-catch per tutte le parti del nostro codice dove si alloca memoria sull'heap per testare questa condizione.
Risulta più pratico usare una funzione nostra funzione set_new_handler() invece di quella standard.
Una soluzione brutale e non molto migliore di quella standard é questa:
void noMoreMemory() {
cerr << "Unable to satisfy request for memory\n";
exit(1);
}
int main() {
set_new_handler(noMoreMemory);
int *pBigDataArray = new int[400000000];
// ...
}
In realtà, dato un caso specifico, si può cercare di ottenere nuova memoria o attuare strategie particolari, prima di arrendersi e terminare l'esecuzione del programma.
Nessun commento:
Posta un commento