Speicherverwaltung

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Speicherverwaltung
Ich hab ne Frage zu malloc. Wenn man die Funktion ein Paar mal hintereinander ausführt, stapelt sie normalerweise die Speicherblöcke direkt übereinander. Hab gehört, es sei nicht garantiert. Die Frage ist- wieso, eigentlich, wenn es doch um virtuellen Speicher geht? Sowie ich das verstehe, soll’s doch gehen, wenn malloc die virtuale Grenze einfach nach oben schiebt(sbrk- like) und um den Rest soll sich doch BS kümmern. Somit müßte auch realloc keine Kopierarbeiten treiben, wenn zwischen realloc- Aufrufen keine zusätzliche Speicherallokation vorliegt. Wo liegt der Haken?


So, auf die Frage hab ich heute eine gute Antwort bekommen, aber da sich für die sowieso keiner zu interessieren scheint, werde ich keine Zeit fürs Posten verschwenden


Och geh… bittebittebitte… :smiley:


Na los,raus mit der Sprache… :slight_smile:


Die Antwort ist zwar gut, aber spannend ist sie nicht. Die Hauptursache, von den kleinen Verwaltungseinheiten zwischen den Speicherblöcken abgesehen, die wir bald selber implementieren dürfen, liegt daran, dass die meisten Standard- Funktionen selber malloc verwenden, selbst wenn man denen sowas nie im Traum zutrauen würde, wodurch der Traum jedes Programmierers- effiziente dynamisch allokierbare Arrays- logischerweise zerplatzt. printf wurde mir als Beispiel genannt.


Na also… :wink: Danke!


Wieso zerplatzt? Du musst nur laenger ein bisschen besser traeumen!! :slight_smile:
z.B. koenntest du in deinem Programm eine spezielle malloc funktion verwenden, die auf Seitengroesse aligned ist und immer gleich eine ganze Seite holen (und evtl. intern verwalten, was davon du brauchst). Damit erzielst du auch den von dir gewuenschten Effekt, musst aber zusaetzliches Wissen ueber die Maschine benutzen, dadurch wird das nicht mehr so portabel.


hmmm, da werd ich mal nachforschen, welche Betriebssysteme den User einzelne Pages verwalten lassen :slight_smile: