Automatische Speicherbereinigung bei Programmende?



  • Hallo zusammen,

    ich würde gerne einmal wissen, ob der Speicher, welcher z.B. mit "new" allokiert wurde bei Programmende automatisch wieder freigegeben wird?
    Das würde bedeuten, dass man sich nur um die Variablen kümmern muss die nicht bis zum Programmende überleben, da die anderen ja automatisch gelöscht werden...

    Hmm, wäre sehr dankbar, wenn ihr mir da helfen könntet!

    Viele Grüße und ein schönes Wochenende
    Robert



  • RobertSt schrieb:

    Hallo zusammen,

    ich würde gerne einmal wissen, ob der Speicher, welcher z.B. mit "new" allokiert wurde bei Programmende automatisch wieder freigegeben wird?

    Ja



  • d ist leider bereits bele schrieb:

    RobertSt schrieb:

    Hallo zusammen,

    ich würde gerne einmal wissen, ob der Speicher, welcher z.B. mit "new" allokiert wurde bei Programmende automatisch wieder freigegeben wird?

    Ja

    ➡ Gilt aber als sehr schlechter Programmierstil!
    Simon


  • Administrator

    Korrekter wäre die Antwort so:

    RobertSt schrieb:

    ich würde gerne einmal wissen, ob der Speicher, welcher z.B. mit "new" allokiert wurde bei Programmende automatisch wieder freigegeben wird?

    Nein. Es gibt jedenfalls vom C++ Standard keine solche Garantie. Heutige moderne Betriebsysteme geben allerdings den Speicher frei, wenn der Prozess beendet wurde. Das ist aber eine Sicherheitsfunktion und nicht ein Feature für den Programmierer.

    Da man somit gar keine Garantie hat, dass dies passiert, ist es sehr schlechter Stil sich darauf zu verlassen. Solange du dich an gewisse Grundregeln hälst, ist die Speicherverwaltung auch sehr einfach. Die wichtigste Grundregel dürfte RAII sein (Resource Acquisition Is Initialisation). Wenn du dich daran hälst, läuft die Speicherfreigabe schon fast automatisch ab.

    Grüssli



  • Ich stimmt Dravere zu.
    Es sei aber noch angefügt, dass es nicht nur schlechter Stil, sondern einfach falsch ist sich auf so etwas zu verlassen. Vor allem im Embedded Bereich wird sich das Betriebssystem nicht sicher um das aufräumen kümmern. Verlass dich also nicht drauf! (Es gibt 1/2 Fälle, wo so etwas sinnvoll sein kann, aber das sind äusserst seltene Fälle).


Anmelden zum Antworten