C Sieb des Eratostenes

  • Ersteller Ersteller Taxotic
  • Erstellt am Erstellt am
@1668mib
Wie gesagt Windows überprüft danach nochmal ob der Programmierer alles richtig gemacht hat und gibt den Speicher notfalls selbst frei. Das ist aber nicht überall so. Und es wird auch
in jedem Lehrbuch und Unterricht daurf hingewiesen, dass es Pflicht ist den Speicher wieder
freizugeben.

Übrigens geb ich dir mit der Abfrage vollkommen Recht, dass ist auch Pflicht und wird
wahrscheinlich auch als Fehler gewertet, falls es nicht vorhanden ist.
 
@TheRed: Könntest du mir ein entsprechendes Zitat raussuchen bezogen auf das Freigeben von dynamischen Speicher am Ende der main-Funktion?

Der erste ausgeführte Code in einem C-Programm ist auch nicht die main-Funktion, sondern Code, der z.B. globale Variablen initialisiert usw... und genauso endet das Programm auch nicht unmittelbar mit der letzten Zeile in der main-Funktion.

Ein C-Programm besteht mehr als nur aus dem eigenen Funktionen... klassische C-Programme legen ihre dynamischen Speicher auf dem Heap ab und führen dort auch "Buch", welche Adressbereiche belegt sind - und am Ende wird vom Programm selbst der gesamte Speicher freigegeben...

Ein Zitat finde ich aber, das mir ganz gut gefällt: "Beim Allozieren des Speichers mit malloc() wird der Aspekt, den Speicher wieder freizugeben, häufig vernachlässigt. In den Beispielen dieses Buchs dürfte ein vergessenes free() nicht allzu tragisch sein, da ein Programm, das sich beendet, seinen Speicherplatz automatisch wieder freigibt" ( http://pronix.linuxdelta.de/C/standard_C/c_programmierung_17_1.shtml )

Aber nochmal um es klar zu stellen: Ich empfehle nicht, dass man das "free" weglassen soll. Ich versteh nur diesen ständigen Aufstand nicht, warum dies für viele die elementarste Funktionalität der main-Funktion zu sein scheint, ohne sich im klaren zu sein, dass es exakt gar keinen Unterschied macht, ob dort das free steht oder nicht...
 
Zurück
Oben