Linker, Loader und ausführbare Formate
Welche Aussage zu den Merkmalen der Section .bss ist richtig?
- ASie ist der Bereich, in dem lokale Variablen einer Funktion bei jedem Aufruf abgelegt werden
- BSie ist der Bereich für Variablen ohne Initialwert (oder mit 0); in der Datei wird nur die Größe vermerkt, und beim Laden wird mit 0 gefüllt
- CSie ist ein nicht beschreibbarer Bereich für konstante Zeichenketten
Antwort und Erläuterung anzeigen
Antwort: B. Sie ist der Bereich für Variablen ohne Initialwert (oder mit 0); in der Datei wird nur die Größe vermerkt, und beim Laden wird mit 0 gefüllt
Globale und statische Variablen ohne Initialwert beginnen nach den Regeln von C mit 0. Wenn der Inhalt vollständig 0 ist, wäre es Verschwendung, Nullen in der Datei zu speichern; für die Section .bss wird daher nur die Größe vermerkt, und der Loader reserviert den Speicher und füllt ihn mit 0. Auch bei „static char buf[1000000];“ wird die ausführbare Datei beispielsweise nicht um 1 MB größer.