Speicher freigeben



  • Hallo,

    ich habe mal eine Verständnisfrage. Ich benutze in einem Programm ein bestimmtes mit new erzeugtes Objekt während der ganzen Laufzeit. Sollte ich beim Programmende noch den Speicher mit delete wieder freigeben oder passiert das automatisch?

    Gruß



  • grundsätzlich solltest du zu jedem new auch ein entsprechendes delete haben. Unabhängig davon, dass die meisten (oder alle?) modernen Betriebssysteme am Ende den Speicher komplett wieder unter ihre fittiche nehmen, den ein Programm konsumiert hat 🙂



  • Und warum? Ich bin ja eigentlich auch für guten Stil aber wenn ich mich darauf verlassen kann das der Speicher nach Programmende frei wird würde ich das ausnutzen.



  • Natürlich nur im Falle, dass ich das Objekt wie in meinem Beitrag beschrieben verwende, also während der kompletten Laufzeit.



  • Gast213 schrieb:

    Ich bin ja eigentlich auch für guten Stil aber wenn ich mich darauf verlassen kann das der Speicher nach Programmende frei wird würde ich das ausnutzen.

    Solange wir uns nur über C++ unterhalten - nein, Du kannst Dich nicht darauf verlassen! Einige Laufzeitumgebungen für C++ garantieren dies, aber das ist nicht der Teil der Programmiersprache und zeugt so nebenbei von schlechtem Programmierstil.


  • Administrator

    Wie ~john es gesagt hat, man hat überhaupt gar keine Garantie. Da kommt es ganz auf das Betriebsystem an.
    Was ich aber für noch wichtiger halte, und deshalb ist es eben auch schlechter Stil, man wird unvorsichtig. Plötzlich schaut man nicht mehr automatisch, wann denn eigentlich der Speicher freigegeben wird, es ist einem plötzlich egal. Das führt vermehrt zu Speicherlecks und am Ende zu Abstürzen.
    Wenn man immer dran denkt, dass zu jedem new ein delete gehört, vermeidet man mit der Zeit automatisch Speicherlecks. Man setzt von alleine ein delete hin, meistens gleich nachdem man das new hingeschrieben hat. Auch wenn es in einer anderen Funktion ist. Man vernachlässigt dies dann eben nicht 😉

    Grüssli



  • Okay. Danke für eure Antworten 🙂



  • Gast213 schrieb:

    Und warum? Ich bin ja eigentlich auch für guten Stil aber wenn ich mich darauf verlassen kann das der Speicher nach Programmende frei wird würde ich das ausnutzen.

    Gehörst du auch zu denen die an Autobahn-Auffahrten ihren Müll aus dem Fenster werfen. Da kannst du dich ja auch drauf verlassen das den Dreck auch jemand
    (die Autobahnmeisterei) wegräumt. 😃 😃


Anmelden zum Antworten