Linker, Loader und ausführbare Formate

Welche Kombination der obigen globalen Variablen wird im Allgemeinen in der Section .bss abgelegt?

int a = 5;
int b;
static int c = 0;
const int d = 7;
  1. Aa und b
  2. Bb und c
  3. Cc und d
Antwort und Erläuterung anzeigen

Antwort: B. b und c

a hat einen von 0 verschiedenen Initialwert und liegt daher in .data; b hat keinen Initialwert und beginnt mit 0, liegt also in .bss; c hat den Initialwert 0, sodass keine 0 in der Datei gespeichert werden muss, und liegt in .bss. d ist eine const-Konstante und liegt in der schreibgeschützten Section .rodata. static bestimmt, ob das Symbol von anderen Dateien sichtbar ist; welche Section verwendet wird, richtet sich nach Initialwert und const.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Linker, Loader und ausführbare Formate

  1. Wo liegt während der Ausführung eine in einer C-Funktion deklarierte lokale Variable ohne static (automatische Variable)?
  2. Aus welchem Bereich eines Prozesses wird der mit malloc in C reservierte Speicher im Allgemeinen genommen?
  3. Welche Reihenfolge ist die richtige Speicheraufteilung eines üblichen Prozesses unter Linux u. a., von kleinen zu großen Adressen geordnet?
  4. Welcher Vorteil ergibt sich daraus, Heap und Stack eines Prozesses mit einem großen freien Bereich dazwischen in entgegengesetzte Richtungen wachsen zu lassen?
  5. Welche Aussage zum statischen Linken ist richtig?

Vergleiche zu diesem Thema