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

Re: about "size" from binutils



Jörg Sommer wrote:

> Unter dynamischem Speicher habe ich bisher malloc und sowas
> verstanden? 

Ich auch ;)

> Kann man im Binary gleich angeben, dass zu Beginn des 
> Programms ein malloc vom System gemacht wird? 

Nicht in dem Sinn.

> Oder was ist der bss?

Im bss-Segment werden uninitialisierte Variablen zusammengefasst. Da
sie uninitialisiert sind, muss im Executable kein Platz für deren
Werte beim Programmstart reserviert werden. Deshalb wird der volle
Speicher für das bss-Segment erst kurz vor dem Starten vom
Betriebssystem bereitgestellt (und sollte genullt werden, was aber
bei Linux nicht der Fall ist).

Im Gegensatz dazu sind im data-Segment initialisierte Variablen samt
Anfangswerten. Deshalb braucht es den vollen Platz im Executable
und wird vor dem Starten nur in den Speicher kopiert.

Dynamisch zugeteilter Speicher (malloc/new) ist auf dem "Heap", das
ist ein davon getrennter Speicherbereich, der nach dem Starten je
nach Bedarf angelegt wird.

Grüße,


Björn

-- 
BOFH excuse #367:

Webmasters kidnapped by evil cult.


Reply to: