[quote=Relais,24.03.2006, 21:22]Können Programme während ihrer Laufzeit Speicher an das OS zurückgeben? Wie geht das?[/quote]
ich kann jetzt nur von windows sprechen:
ein prozess hat - egal wieviel RAM der computer hat - 2 GB virtuellen speicher (RAMD + SWAP). Diesen kann er beliebig nutzen.
Unter C/C++ kann man zwischen zwei Arteb von Speicher unterschienden. Code-Speicher und Stack-Speicher (@Ronnie: in uralt C Zeiten kannte man Heap noch gar nicht)
eine
belegt z.b. 512 bytes vom code speicher, wobei ein
char *var = new char[512]
512 bytes auf dem stack belegt. Code-speicher kann man nicht - zumindeest nicht durch anschupsen - an das OS wieder zurück geben. Speicher Stack schon, und zwar mit
.
Wenn man sich ein Progamm unter Windows im TaskManager anschaut, kann man beobachten wie Speicher konsumiert und freigegeben wird. Wenn die Perl.exe läuft, sieht man, dass kein Speicher freigegeben wird, es wird nur ggf keiner mahr konsumiert.
PS: Preisfragen an die C Leute
1: was ist der Unterschied zwischen char *x; und char x[]; (beides global) und
2: extern char *x; und extern char x[]; (auch wieder global)\n\n
<!--EDIT|esskar|1143255709-->