sonst/newhdl1.cpp

Das folgende Code-Beispiel stammt aus dem Buch
Objektorientiertes Programmieren in C++ - Ein Tutorial für Ein- und Umsteiger
von Nicolai Josuttis, Addison-Wesley München, 2001
© Copyright Nicolai Josuttis 2001


// Headerdatei für den New-Handler
#include <new>

// Standard-Headerdateien
#include <iostream>
#include <cstdlib>

/* eigenerNewHandler()
 * - gibt Fehlermeldung aus und beendet das Programm
 */
void eigenerNewHandler ()
{
    // Fehlermeldung auf Standard-Fehlerkanal ausgeben
    std::cerr << "Speicherplatz alleeeeeeeeee..." << std::endl;

    // entsprechende Exception auslösen
    throw std::bad_alloc();
}

int main()
{
    try {
        // eigenen New-Handler installieren
        std::set_new_handler(&eigenerNewHandler);

        // und mit Endlosschleife, die Speicherplatz anfordert, testen
        for (;;) {
            new char[1000000];
        }

        // kein Rechner kann unendlich Speicherplatz haben
        std::cout << "Huch, Zauberei!" << std::endl;
    }
    catch (const std::bad_alloc& e) {
        std::cerr << "Exception: " << e.what() << std::endl;
        return EXIT_FAILURE;
    }
}