ich schrieb:
> Das Programm läuft quasi in einer Endlosschleife, wodurch ich es zu 99%
> mit dem X schließe.
>
> Quasiablauf:
> - malloc(...)
> - while(1){...}
> - free(...);
>
> Nach meinem Verständnis erreiche ich free() nie. Wie löst man so ein
> Problem elegant?
Es ist gelöst, schliesst du das Fenster in dem das Programm läuft (kann
ja nur eine Konsolenanwendung sein), wird auch der Speicher wieder
freigegeben.
Aber so ein Programm ist natürlich Scheisse. Man sollte Programme nicht
abschiessen mmüssen, sondern ordnungsgemäss herunterfahren können, mit
Close-Button, mit Close-Menükommando, mit Tastatur falls es auf Eingaben
wartet, mit allem was angemessen ist.
Das WM_CLOSE wäre für ein Windows-Fenster-Programm die richtige Wahl,
dafür muss man halt ein richtiges Windows Programm schreiben.
Man bedenke auch, daß Programme die in while(1) Endlosschleifen
stecken,s ständig den prozessor auslasten und das System belasten und
falls es einen Akku giubt den leersaugen und andere Programme nicht zum
Zug kommen lassen. Schon alleine daher ist so eine Endlosschleife eher
schlecht. Man baut event driven Programme, ereignisgesteuerte, deren
Hauptschleife beendet wird wenn das Programm beendet werden soll.
Falls das malloc eine immer gleiche Grösse anfordert, sollte man den
Speicher eh statisch anlegen.
char buffer[1234];
while(1) { ... };
Dann staret das Programm nur wenn genug Speocher verfügbar ist.