new und delete und zeiger = NULL



  • Hallo Zusammen,

    wird ein reservierende Speicher freigegeben wenn der dadrauf zeugende Zeiger auf null gesetzt wird?

    ein BSP:

    class A
    A a = new A();
    // Speicher ausfüllen und Inhalt verwenden
    .....
    // delete a; // ist diese Zeile erforderlich, sinnvoll ?
    a=NULL;
    

    meiner meinung nach reicht die zeile a= NULL net weil dadurch der Speicher nicht gelöscht wird oder mindestens nicht sofort und deswegen ein delete vorher erforderlich ist.
    in Java muss der Benutzer nicht um Speicher kümmern dank der Carbage collektor. eine Methode ist die referenzen von Objekte, die man nicht mehr braucht auf null zu setzen. der Carbage Collektor wird automatisch aufgerufen und gibt den Speicher von solchen Objekte frei

    vielen Dank im Voraus für eure Anregungen
    Youssef



  • youssef schrieb:

    Hallo Zusammen,

    wird ein reservierende Speicher freigegeben wenn der dadrauf zeugende Zeiger auf null gesetzt wird?

    Nein. ⚠

    C++ hat keinen eingebauten Garbage Collector.
    Aber schau mal da: http://www.c-plusplus.net/forum/viewtopic-var-t-is-134971.html
    🙂


  • Mod

    Der delete ist unbedingt erforderlich.

    Ansonsten kann man nur die Nutzung von "Smart Pointern" empfehlen (std::auto_ptr, tr1::shared_ptr, tr1::weak_ptr).


Anmelden zum Antworten