Bei allen nicht-trivialen Betriebssystemen werden Prozessressourcen nach Abschluss des Prozesses vom Betriebssystem zurückgewonnen.
Es sei denn, es ist specifc und zwingenden Grund ausdrücklich freien Speicher bei Beendigung Sie es nicht tun müssen, und Sie sollten mindestens diese Gründe nicht versuchen:
1) Sie würden Code schreiben müssen Mach es und teste es und debugge es. Warum, wenn das OS es kann? Es ist nicht nur redundant, es reduziert auch die Qualität, da Ihr explicit resource-releasing niemals so viel Test bekommt, wie es das Betriebssystem bereits hatte, bevor es veröffentlicht wurde.
2) mit einem komplexen App, mit einer grafischen Benutzeroberfläche und viele Subsysteme und Threads, sauber Speicher beim Herunterfahren zu befreien ist nahezu unmöglich sowieso, was zu:
3) Viel Bibliothek Entwickler bereits bis auf gegeben haben Das Mantra muss man explizit loslassen, weil die Komplexität dazu führen würde, dass die Bibliotheken niemals freigegeben würden. Viele berichten von unveröffentlichtem (aber nicht verlorenem) Speicher für Valgrid, und mit undurchsichtigen Bibliotheken können Sie überhaupt nichts dagegen tun.
4) Sie dürfen keinen Speicher freigeben, der von einem laufenden Thread verwendet wird. Um den gesamten Speicher in Multithread-Anwendungen sicher freigeben zu können, müssen Sie sicherstellen, dass alle Prozessthreads gestoppt sind und nicht erneut ausgeführt werden können. Der Benutzercode verfügt nicht über die entsprechenden Tools, das Betriebssystem. Es ist daher nicht möglich, Speicher von Benutzercode in solchen Apps auf sichere Weise explizit freizugeben.
5) Das Betriebssystem kann den Prozessspeicher in großen Blöcken freigeben - viel schneller als mit Dutzenden von Sub-Allkationen im C-Manager.
6) Wenn der Prozess beendet wird, weil er aufgrund von Speicherverwaltungsproblemen fehlgeschlagen ist, wird der Aufruf von free() viel öfter nicht helfen.
7) Viele Lehrer und Professoren sagen, dass Sie explizit die Erinnerung frei haben müssen, also ist es offensichtlich ein schlechter Plan.
Denken Sie an ein Programm, das eine lange Zeit - wie Ihr Browser - läuft und das viele Threads verwendet. Wenn jeder Thread ein Speicherleck von einem Megabyte pro Webseite (Beispiel) verursacht, stellen Sie sich vor, was nach einem Tag passiert. Sie sollten 'free' verwenden. Es ist eine gute Übung. – blazs
Wenn der Speicher durch den Lebenszyklus des Prozesses lebt, dann würde OS das für Sie tun. aber sehr selten sollte die Erinnerung die volle Lebensdauer eines Prozesses leben. – user3528438
http://stackoverflow.com/q/2215259/1606345 –