void newHandler() {
cdebug << "memory allocation failure" << std::endl;
throw std::bad_alloc();
}
int main() {
std::set_new_handler(newHandler);
// ...
}
volta newHandler è stabilito come il nostro gestore di errori, verrà chiamato quando alcuna assegnazione mucchio fallisce. La cosa interessante del gestore dell'errore è che verrà chiamato continuamente finché l'allocazione della memoria non riesce o la funzione genera un errore.cattura un'eccezione per l'allocazione di memoria
La mia domanda sopra il testo è ciò che intende authore per "finché l'allocazione di memoria non ha esito positivo o la funzione genera un errore". In che modo la funzione può generare un errore in questo caso? Richiesta con esempio per capire.
Grazie per il vostro tempo e aiuto.
possibile duplicato (http://stackoverflow.com/questions/7194127/how- dovrebbe-i-write-iso-c-standard-conformant-custom-new-and-delete-operators) –
@Loki: Questa è una domanda più specifica del possibile duplicato che hai postato. Ma penso che il titolo dovrebbe essere cambiato in: Come usare std :: set_new_handler – Phong