new/delete



  • Abend,
    kann es sein, dass Visual C++ Speicher welcher mit new allociert wird initialisiert und auch nach einem delete diesen wieder mit einem festen Muster überschreibt?

    // Nach new steht im Speicher 0xcd 0xcd 0xcd ...
    long *pLong = new long;
    ...
    // Nach delete wird der Speicher mit 0xee 0xfe 0xee ... überschrieben
    delete pLong;
    

    Wäre ja dann eine klasse Möglichkeit zum Überprüfen von Zeigern wenn diese nicht NULL sind. So könnte man feststellen ob ein Objekt bereits von irgendwem zerstört wurde.



  • Herrmann schrieb:

    Abend,
    kann es sein, dass Visual C++ Speicher welcher mit new allociert wird initialisiert und auch nach einem delete diesen wieder mit einem festen Muster überschreibt?

    Das kann nicht nur sein, das ist so. Das soll dir helfen, Speicherfehler einfacher zu finden.

    Wäre ja dann eine klasse Möglichkeit zum Überprüfen von Zeigern wenn diese nicht NULL sind. So könnte man feststellen ob ein Objekt bereits von irgendwem zerstört wurde.

    Aber nur während der Entwicklungsphase. Der Compiler macht das nur im Debugmodus. Bau bitte nicht dein Design darauf auf.



  • Das macht der Compiler aber nur im Debug-Modus, d.h. wenn du dein Projekt zum Debuggen übersetzt. Für ein Release wär's ja auch Schwachsinn, so überflüssigen Code auszuführen (die Werte initialisieren sich ja schließlich nicht von selbst ;-))



  • Danke euch beiden für die nützlichen Infos.


Anmelden zum Antworten