Der Martin: Stack und Heap

Beitrag lesen

Hi,

kann es sein, dass du hier die Speicherverwaltung des OS und die der C-Runtime vermischt hast?
Ja, diese sind ja auch vermischt. Bzw. bist eigentlich du über die CRT hinausgegangen und hast die Speicherverwaltung des Systems ins Spiel gebracht.

ich hatte bei der Diskussion nie die Speicherverwaltung der C-Runtime im Sinn, sondern ausschließlich die des OS.

Wenn ich von Windows einen Speicherblock mit GlobalAlloc() anfordere, ...
GlobalAlloc nutzt auch einen Windows Heap. Nur einen anderen als die CRT. Eine Page reserviert man mit VirtualAlloc, auch der Windows-Heapmanager.

Dann reden wir tatsächlich von unterschiedlichen Dingen, und sollten erstmal klären, was wir unter "Heap" verstehen. Ich verstehe darunter jedenfalls die Gesamtheit des Arbeitsspeichers, den eine Applikation vom Betriebssystem "anfordern" und nutzen kann. Du scheinst unter "Heap" jedoch ein internes Management in der Applikation (bzw. deren Runtime-Umgebung) zu verstehen.

Um ehrlich zu sein: Mir war VirtualAlloc() bisher völlig unbekannt, ich habe den Speicherbedarf meiner Anwendungen immer mit GlobalAlloc() und GlobalFree() organisiert. Und auch nach dem Lesen der Beschreibung in der Win32-Referenz wird mir nicht ganz klar, was die Funktion VirtualAlloc() wirklich tut bzw. worin ihr Daseinszweck besteht.

einer der Vorteile der virtuellen Speicherverwaltung (nicht zu verwechseln mit der Swapdatei!) ist doch, dass man über die Descriptortabellen die 4kB-Kacheln mit gleichbleibenden virtuellen Adressen lustig im physikalischen Adressraum hin- und herschieben kann. So kann man Fragmentierung von vornherein vermeiden, bzw. sie ist aus Applikationssicht nicht erkennbar.
Das verstehe ich nicht ganz, ich rede von der Fragmentierung innerhalb der Heaps.

Also innerhalb von Speicherbereichen, die von der Applikation selbst verwaltet werden? Dann bin ich raus aus der Nummer, das hatte ich nie gemeint. Ich sprach ausschließlich von der Speicherverwaltung durch das OS; das Speichermanagement der Applikation ist ja quasi nur Untermieter davon.

Ciao,
 Martin

--
"Hier steht, deutsche Wissenschaftler hätten es im Experiment geschafft, die Lichtgeschwindigkeit auf wenige Zentimeter pro Sekunde zu verringern." - "Toll. Steht da auch, wie sie es gemacht haben?" - "Sie haben den Lichtstrahl durch eine Behörde geleitet."
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(