#include
<new>
new_handler set_new_handler(new_handler handler)
Hinterlegt einen Verweis auf die Funktion, die aufzurufen ist, wenn kein Speicher reserviert werden kann.
Ein new_handler
sollte eine der folgenden Aktionen ausführen:
bad_alloc
-Ausnahme werfen oderabort()
oder exit()
aufrufen. handler | Adresse einer Funktion |
Die Funktion muss folgenden Typ besitzen:
typedef void (*new_handler) ();
Rückgabewert: die Adresse der bisherigen Behandlungsroutine.
#include <new> #include <iostream> void notstand() { std::cerr << "... wird es auch schief gehen." << std::endl; throw std::bad_alloc(); } int main() { std::new_handler old = std::set_new_handler(notstand); try { std::cout << "Wenn etwas schiefgehen kann, ..." << std::endl; double *p = new double[ 100000000 ]; } catch(std::bad_alloc& ) { std::cerr << "\t(Murphy's Gesetz)" << std::endl; } std::set_new_handler(old); }