Re: about "size" from binutils
Jörg Sommer wrote:
> Warum unterscheidet man die vom Heap?
Weil man schon beim Programmstart weiß, dass der Speicherplatz
benötigt wird. Deswegen ist es nicht sinnvoll, erst die
verhältnismäßig rechenzeitintensive malloc-Funktion darauf
anzusetzen, indem man alles einzeln reserviert, sondern gleich
einen festen Block zu reservieren und ggf. zu initialisieren.
> Der Compiler kennt doch die Größe des bss' (Was heißt das
> eigentlich?)
"block started by symbol". IIRC stammt das von einem Befehl eines
alten, ehrenhaften Dinosaurier-Rechners.
>> Dynamisch zugeteilter Speicher (malloc/new) ist auf dem "Heap",
>> das ist ein davon getrennter Speicherbereich,
>
> Ähm, also malloc ist ja nichts anderes als eine angenehmere Form
> von brk (ist das falsch?)
"brk" habe ich noch nie benutzt ...
> und dazu steht in der Manual page, dass es das data?Segment
> vergrößert.
Es arbeitet aber mit dem data-Segment (dort packt der Compiler
initialisierte Variablen rein), und dessen Struktur steht zur
Compilezeit fest. Zur Laufzeit kann da nichts verändert werden, im
Gegensatz zu malloc und dem Heap.
> Es gibt also keinen Heap in dem Sinne.
Woraus schließt du das? :) Die Größe des data-Segments steht fest,
sogar schon zur Compilezeit. Der Heap kann während der Laufzeit
innerhalb gewisser Grenzen (verfügbarer Speicher) beliebig wachsen
und schrumpfen.
> Wobei, da ist noch mmap. Das sollte ein vollkommen anderer
> Speicherbereich sein.
Wie kommst du jetzt auf mmap? Das ordnet nur einen Adressbereich
einer Datei zu.
Grüße,
Björn
--
BOFH excuse #229:
wrong polarity of neutron flow
Reply to: