Dynamische Speicherverwaltung
-
Hallo zusammen,
ich habe eine frage zur Funktion "malloc()". Wenn ich mir über "malloc()" einen Speicherbereich reserviere, wird dieser anschließend automatisch wieder frei gegeben?
Weiß vielleicht jemand auch noch mit welchem System der Speicher freigegeben wird? Also, wenn man mehrere Blöcke nacheinander anfordert, durch mehrere "malloc´s", liegen diese Bereich dann auch physikalisch beieinander oder werden irgendwo im Speicher freie Plätze gesucht?Ciao...
-
waxalot schrieb:
Wenn ich mir über "malloc()" einen Speicherbereich reserviere, wird dieser anschließend automatisch wieder frei gegeben?
Nein, dazu ist die Funktion free da.
Weiß vielleicht jemand auch noch mit welchem System der Speicher freigegeben wird? Also, wenn man mehrere Blöcke nacheinander anfordert, durch mehrere "malloc´s", liegen diese Bereich dann auch physikalisch beieinander oder werden irgendwo im Speicher freie Plätze gesucht?
Die werden irgendwo gesucht. Selbst durch Zufall kann es eigentlich nicht sein, dass sie nahtlos hintereinander liegen, da idR vor oder nach jedem Block ein paar Bytes Steuerinformationen, an denen sich malloc und free beim Suchen der Blöcke orientieren, abgelegt sind.