Konstruktor/Destruktor



  • Wann ist es sinnvoll selber einen Destruktor zu implementieren ?

    Der Speicher wird doch auch vom Standard Destruktor freigegeben oder ?

    Danke !



  • Nein wird er nicht.Wenn du in deiner Klasse irgendwo speicher über new allokierst, muss dieser auch wieder freigegeben werden, und das passiert nicht über den Standarddestruktor.



  • Danke. Wäre doch sinnvoller wenn das System den Speicher beim Verlassen
    z.B. einer Funktion selber wieder freigibt. Wenn eine Variable seine
    Gültigkeit verliert sollte auch der Speicher wieder freigegeben werden.

    Bye



  • Das ist auch der Fall, sofern du das nicht explizit selber regelst. Der automatische Speicher ist genau für solche Fälle gedacht und ist auch die Basis von exception sicherem Code.

    {
     int i = 2; //nur im innersten Scope (Funktionen,Klassen usw.) gültig
     int* pi = new int; // solange gültig, bis delete auf den Zeiger aufgerufen wird
    }
    


  • blurry333 schrieb:

    Danke. Wäre doch sinnvoller wenn das System den Speicher beim Verlassen z.B. einer Funktion selber wieder freigibt.

    Der Speicher von was?

    Wenn eine Variable seine Gültigkeit verliert sollte auch der Speicher wieder freigegeben werden.

    Das ist der Fall.



  • blurry333 schrieb:

    Danke. Wäre doch sinnvoller wenn das System den Speicher beim Verlassen
    z.B. einer Funktion selber wieder freigibt. Wenn eine Variable seine
    Gültigkeit verliert sollte auch der Speicher wieder freigegeben werden.

    Bye

    Komiker.
    Man habe eine Factory-Klasse/Funktion, die neue Objekte Produziert. Zum Beispiel eine Funktion in ner Dll, die über dlload/LoadLibrary geladen wird und eine neue Instanz der Plugin-Klasse zurückgibt. Das wäre fatal, wenn diese Factory-Klasse nach Verlassen das eben erzeugte (und zurückgegebene) Objekt wieder zerstören würde...


Anmelden zum Antworten