Instanz exestiert nach Aufruf des Destruktors immer noch!



  • Thomas Strasser, C++ Programmieren mit Stil, 2. Auflage, 2003, S.187:
    "Elementfunktionen, die automatisch aufgerufen werden (wie etwa Konstruktor, Destruktor etc.), sollten nicht von Hand aus aufgerufen werden."

    Thomas Strasser, C++ Programmieren mit Stil, 2. Auflage, 2003, S.196:
    "Konstruktoren und Destruktoren sind Initialiserungs- bzw. De-Initialiserungsfunktionen. Sie sind nicht verantwortlich für das Anlegen bzw. Freigeben des Objekts selbst bzw. dessen Instanzvariablen. Das wird vom C++-System übernommen."



  • "Konstruktoren und Destruktoren sind Initialiserungs- bzw. De-Initialiserungsfunktionen. Sie sind nicht verantwortlich für das Anlegen bzw. Freigeben des Objekts selbst bzw. dessen Instanzvariablen. Das wird vom C++-System übernommen."

    Besser: Sie sind nicht verantwortlich für das Anlegen bzw. Freigeben des vom Objekt verwendeten Speichers. Das wird vom operator new bzw. operator delete erledigt.



  • new/delete gilt für Objekte auf dem Heap. Es gibt aber auch Objekte auf dem Stack oder im globalen Speicher (oder sonst wo).



  • Erhard Henkes schrieb:

    new/delete gilt für Objekte auf dem Heap. Es gibt aber auch Objekte auf dem Stack oder im globalen Speicher (oder sonst wo).

    ja, aber das system ist das gleiche.

    {
    int i; //i wird allokiert
    } //i wird deallokiert

    deswegen auch meine beispiele mit new - denn der mechanismus ist der gleiche.



  • Ich verstehe die ganze Aufregung gar nicht. Es ist doch ganz klar, daß es Zombies geben kann, man könnte die wohl auch durch ein hartes Zeigercasting wieder reaktivieren (allerdings mit den bei Zombies üblichen Nebenwirkungen - holt schon mal ein Kreuz).

    Und der Unterschied zwischen Zombies auf dem Stack und auf dem Heap ist doch auch sonnenklar.

    Aber das liegt an der technischen Grundlage der Speicherverwaltung von C++ und dem OS. Und es stellt keine wie auch immer geartete Einschränkung für den Entwickler dar.

    Ich sehe ein, daß jemand beim ersten Mal verwundert ist, aber wieso kann dieser Thread so viele Beiträge bekommen? 😕


Anmelden zum Antworten