2012-04-03 4 views
3

Mögliche Duplizieren:
When you exit a C application, is the malloc-ed memory automatically freed?Bewirkt OS Speicher beim Beenden der Anwendung in C?

So ziemlich der Titel. Erteilen (moderne) Betriebssysteme bei Programmende automatisch Heap-allokierten Speicher zurück? Wenn ja, ist der Speicher frei strikt muss oder mehr von Just-Follow-the-verdammt-Standard-Sie-dumm ein Ding?

Was ist das Schlimmste, was passieren kann, wenn ich den Speicher nicht explizit frei gebe, außer dass ich ihn verschwende, während die Anwendung ausgeführt wird?

+1

@JonathonReinhart Es tut mir leid, dass ich diese Frage nicht gefunden habe. Ich stimme auch selbst zu: D – GradGuy

Antwort

2

Wenn eine Anwendung beendet wird, wird der gesamte Speicher vom Betriebssystem zurückgewonnen. Der Grund, warum Leute Memory-Management-Techniken predigen, ist, solange die App läuft ist, wird jeder Speicher, den es gefragt wird in seinem Besitz bleiben (auch wenn es nicht mehr verwendet wird). Es sei denn natürlich, Sie waren nett genug, free anzurufen.

2

Wenn die App beendet wird, bereinigt das Betriebssystem den Speicher und die Ressourcen. Wenn Sie Speicher nicht mit free() bereinigen, wird Heap-allozierter Speicher aufgebraucht, wenn Sie mehr und mehr anfordern. Wenn es weitergeht, beginnt das Betriebssystem mit der Verwendung von swap/page file zur Zuweisung. es noch weitergeht os wird zum Stillstand kommen, oder die App mit einer Art von Fehler zu beenden

2

Ersetzt OS Speicher auf Anwendung beenden in C? Yes.

Wenn Sie keinen Speicher freigeben: Ihre Anwendung kann nicht genügend Arbeitsspeicher haben & Absturz.

2

Freigeben von Speicher vor dem Beenden ist optional, da die o/s wird für Sie aufräumen.

Das Freigeben von nicht verwendetem Arbeitsspeicher während des Betriebs ist eine gute Idee; Es verhindert, dass der Anwendung nicht genügend Arbeitsspeicher zur Verfügung steht (und beendet werden muss). Die Schwierigkeit besteht oft darin, herauszufinden, welcher Speicher nicht benutzt wird.

2

Ja. Aber wenn Ihr Programm ein lang laufendes Programm ist, stürzen Sie nicht nur Ihr Programm schließlich, aber im Laufe der Zeit werden Sie auch das System verlangsamen, vorausgesetzt, Sie verwenden zu viel Speicher.

Verwandte Themen