Was am ende eines C Programms alles "gelöscht" werden muss?



  • Kann mir jemand sagen, was für Sachen ich am ende eines Programms wieder gelöscht werden müssen?
    Was ich jedenfalls weiß sind, dass man Pointer löschen sollte, jedoch was noch?



  • was heißt für dich "löschen"?



  • eigentlich nur dateien 😃



  • Meine damit, dass Java z.B. einen garbage collector hat c/c++ jedoch nicht.
    Muss ich dadurch beim Programmieren irgendwlche Variablen/Zeiger am ende des Programms wieder Freigeben bzw. auf null setzen?



  • auch wenn es kein std. ist so wird in der regel der gesamte reservierte speicher am ende des programms vom os freigegeben.


  • Mod

    Guter Stil ist es, alle Sachen die man mit malloc und Konsorten reserviert hat, wieder freizugeben. Ebenso alle Dateien zu schließen. Benutzt man sonstige Geräte, dann gibt man deren Handles natürlich auch wieder frei.

    Es ist zwar richtig, dass viele Betriebssysteme hinter einem aufräumen, aber es ist extrem schlechter Stil, sich darauf zu verlassen. Außerdem fällt man mit dieser Einstellung ganz schnell auf Schnauze wenn man mal nicht für ein modernes Desktopbetriebssystem programmiert, sondern zum Beispiel im embedded Bereich.



  • SeppJ schrieb:

    ...sondern zum Beispiel im embedded Bereich.

    da ist doch das programm ende mit dem ausschalten des geräts gleichzusetzen und beim einschalten sind da sicher nichtmehr die daten im ram...



  • Ja, die Begründung war wirklich ein wenig kaka



  • Die Begründung ist insofern nicht so kacke, da man ansonsten irgendwann kein Speicher mehr zur Verfügung hat, weil man sich immer darauf verlassen hat, dass der Speicher später ja eh freigegeben wird. Tja, jetzt ist der Speicher aber komplett verbraucht, aber das Programm soll eigentlich noch eine Zeit weiterlaufen und benötigt dafür neuen Speicher. Gibt aber kein freien mehr, da man sich das Aufräumen gespart hat. Probleme sind also vorprogrammiert (Wortwitz!).


Anmelden zum Antworten