Destruktor auch bei beendigung?



  • Hallo,
    wird der Konstruktor auch bei beendigung eines Programms (also zB. bei Linux zur Strg+C oder durch klicken auf das Schliesen-"X") aufgerufen?
    mfg Kante



  • Probier es doch einfach aus? 😉 EInfach in einen Distruktor eine Datei schreiben oder eine Textausgabe in die Konsole machen (bei X-Klick schlecht, aber bei strg+C schon eher)

    Normalerweise werden die Destruktoren nur aufgerufen, wenn das Programm die main() verlässt.



  • Die Destruktoren werden immer aufgerufen, wenn das Programm (bzw. der umgebende Wirkungsbereich) regulär beendet wird - d.h. bei einem return aus der main() oder einem exit()-Aufruf. Wenn du das Programm von außen "killst", wird es sofort abgebrochen und hat keine Zeit mehr für irgendwelche Aufräumarbeiten.



  • Wobei exit nicht die Desktruktoren von automatischen Objekten im aktuellen Block aufruft. Statische Objekte werden aber abgeräumt. Bei Ctrl+C bekommt zumindest unter UNIX ein Programm ein Signal (SIGINTR?) und muss halt entsprechend darauf reagieren. Tut es das nicht, kommt das seiner sofortigen Beendigung mit abort() gleich.


Anmelden zum Antworten