EC++: senza memoria

Appunti tratti dalla rilettura di Effective C++ di Scott Meyers. Secondo blocco: Gestione della memoria.

(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