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

Re: about "size" from binutils



On Mon, 28 Jan 2008 12:11:51 +0000 (UTC)
Jörg Sommer <joerg@alea.gnuu.de> wrote:

> >
> > Unix-Speichermodell für Prozesse: 
> > text ... Anweisungen (das, was im I-Cache landet)
> > data ... "Harte" Variablen (z.B. int i)
> > bss ... dynamischer Speicher (z.B. std::vector myvec)
> 
> Unter dynamischem Speicher habe ich bisher malloc und sowas verstanden?

Ja. Mein Beispiel ist genau das, nur schrieb ich nicht <type>* myvec
Wenn zur Compilezeit die Größe des zu reservierenden Speichers bekannt
ist, dann wird eine entsprechende Menge im bss-Segment reserviert und
der initialisierte Zeiger kommt ins data-Segment. Ist die Größe zur
Compilezeit nicht bekannt, wird das hinter das bss-Segment gelegt und im
bss-Segment steht nur ein uninitialisierter Zeiger.

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

Man kann in dem Binary auch gleich angeben, dass ein malloc() gemacht
werden soll, denn das besteht ja auch aus Programmtext (und daher im
text-Segment). Vielleicht ist zur Compilezeit auch schon die Größe
bekannt, die allokiert werden soll, dann steht die im Text-Segment
(Literale) oder im Data-Segment (Variablen)


Dirk.


Reply to: