Hi
Ich habe da ein Programm das von UNIX auf Linux portiert wurde. In diesem Programm hat es unter anderem ein Error-Fenster das erzeugt wird wenn ein Speicherfehler vorliegt. Das Ganze sieht ungefähr so aus:
class guiErrorMsg : public …
{
public:
    guiErrorMsg ( widget TheParent, char* TheMessage, TheTitle );
    // etc.
private:
    // etc.
};
in main()
{
    // etc.
    if( new guiErrorMsg( …, …, … ) == NULL )
    {
       throw( … );
    }
    // etc.
    return 0;
}
Ich möchte nun aber, dass kein throw() sondern ein Eintrag in einem Logger ausgeführt wird. Nun habe ich folgendes in einem Fachbuch gelesen:
According to the C++ standard, if new runs put of memory, it throws an exception that normally aborts the program. On older C++ systems, when new runs out of memory, it returns a null pointer.
Und folgendes habe ich mit $man g++ herausgefunden:
<b>-fcheck-new</b>
    Check that the pointer returned by "operator new" is non-null
    before attempting to modify the storage allocated. The current
    Working Paper requires that "operator new" never return a null
    pointer, so this check is normally unnecessary.
    An alternative to using this option is to specify that your "opera-
    tor new" does not throw any exceptions; if you declare it tthhrrooww(()),
    G++ will check the return value. See also new (nothrow).
Also nehme ich an, dass in meinem Fall ein throw() ausgeführt und nicht ein Null-Pointer zurückgegeben wird.
Aber gerade throw() will ich unterdrücken. Ich kann leider nirgends ein Manual oder ein Beispiel finden (auch mit google nicht) das „See also new (nothrow)“ näher beschreiben würde.
Wer kann mir weiterhelfen?
Dank und Gruss,
d-oli