Ich schreibe eine C-App und ich verwende malloc, um Daten auf dem Heap zu erstellen. Jetzt, während die Anwendung aktiv ist, sind diese Daten immer persistent, so dass ich die Malloc-Daten niemals "freigebe".Ressourcenverbrauch von MALLOC in einer C-Anwendung
Meine Frage ist: Wird dieser Speicher automatisch freigegeben, wenn die Anwendung beendet wird, oder muss ich free() manuell nach Abschluss meiner Anwendung ausführen?
Ich kann keine Aussage oder Implikation in der Norm finden, dass Sie alles, was Sie malloc "befreien" sollten. Natürlich liegen die gehostete Umgebung und die Art der Prozesse außerhalb des Geltungsbereiches der C-Spezifikation, aber ich kann mir kein Betriebssystem mit dem Gefühl vorstellen, ein Programm auszuführen, bei dem der Programmspeicher beim Beenden nicht dem Betriebssystem überlassen wird DOS. Sicherlich haben eingebettete Umgebungen ohne ein Betriebssystem möglicherweise nicht einmal eine Vorstellung davon, "das Programm auszuführen" oder "zu beenden", in welchem Fall die Angelegenheit irrelevant ist. –
@R ..: Ich habe keine Kopie des Standards bereit, aber ich erinnere mich, dass es nicht angibt, was passiert mit Malloc'd Speicher beim Beenden. Ich habe gehört (keine Referenz, also könnte das nur ein Gerücht sein), dass einige ältere Mainframe-Betriebssysteme explizit "frei" benötigen, da sie pro Benutzer einen einzigen Adressraum haben. –