Moin,
Auch wenn Du Dein Programm beendest,(und es sieht so aus das alles Frei gegeben wird), ist der Speicher noch reserviert!
Das ist barer Unsinn. Wo hast du das her? Wenn der Prozess beendet wird, dann wird der Adressbereich des Prozesses komplett wieder frei gegeben und steht anderen Programmen zur Verfügung. Und es spielt keine Rolle, ob du den von dir reservierten Speicher frei gibst oder nicht. Beim beenden räumt Windows hinter dir auf.
mh... War mir nicht so, das Windows erst den Speicher "richtig" freigibt wenn ein neuer Prozess speicher anfordert!? Sollte also mein Prog nach beenden noch mal gestartet werden, erspart sich Windows ne neue zuordnung von Speicher!? (schnellerer Programmstart) Oder verwechsle ich das jetzt mit was anderem
[...]
Unwahrscheinlich. Weil wenn ich z.B. Notepad beende und dann eine neue Instanz starte, mache ich ja da nicht wieder weiter. Und um herauszufinden, welche Daten weiter genutzt werden könnten, ist eh alles wieder geladen. Ich glaube du meinst eher den Cache in der Festplatte. Aber da hat da Betriebssystem nur entfernt mit zu tun und im idealfall gar nicht.
[...]Aber wird nicht immer expliziet darauf hingewiesen, das ich selbst dafür verantwortlich bin, egal ob es ein Record, Objekt oder ein dynamisches Array ist, am Ende dafür zu sorgen, das es auch wieder frei gegeben wird? Dann kann man sich ja am Ende( das aufräumen sparen)[...]
Kann sein, dass ich mist erzähle, aber normalerweise speichert Windows ab: Der Prozess X hat die virtuelle Adresse V die auf die physikalische Adresse P abgebildet wird. Das heißt, wenn der Prozess X den Wert aus der Adresse V haben will, dann wird die Speicherzelle P aus den
RAM oder Swap gelesen.
Nun ist das beim Programmende doch eigentlich so, dass er einfach die Tabelle für den Prozess X verwirft, und die Adresse P nicht mehr benutzt wird. Das da vorher Daten drin waren kann (i.d.R.) egal sein. Notfalls musst du am Anfang den Wert fest definieren.
MfG
Fabian