[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: