sonst/newimpl.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


// mögliche Implementierung von Operator new
void* operator new (std::size_t size)
{
    void* p;        // Zeiger für neuen Speicher

    // solange es nicht klappt, neuen Speicher zu bekommen,
    // New-Handler aufrufen oder Ausnahme auslösen
    while ((p = holSpeicher(size)) == 0) {
        // kein ausreichender Speicherplatz verfügbar
        if (MyNewHandler != 0) {
              // New-Handler aufrufen
              (*myNewHandler)();
        }
        else {
              // Ausnahme auslösen
              throw std::bad_alloc();
        }
    }

    // OK, neuen Speicherplatz zurückliefern
    return p;
}