Linker, Loader und ausführbare Formate

In welcher Section wird eine außerhalb von Funktionen geschriebene globale Variable „int limit = 100;“ in C im Allgemeinen abgelegt?

  1. A.data (Daten mit Initialwert)
  2. B.bss (Daten ohne Initialwert)
  3. C.text (Maschinencode)
Antwort und Erläuterung anzeigen

Antwort: A. .data (Daten mit Initialwert)

Globale und statische Variablen mit einem von 0 verschiedenen Initialwert liegen in der Section .data, und ihr Initialwert ist in der Datei gespeichert. Beim Laden des Programms wird dieser Inhalt unverändert in den Speicher abgebildet, sodass limit zu Beginn von main den Wert 100 hat. .data wird zur Laufzeit überschrieben und ist daher ein Bereich mit Lese- und Schreibrecht.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Linker, Loader und ausführbare Formate

  1. Welche Aussage zu den Merkmalen der Section .bss ist richtig?
  2. Die Ausführung von „char *p = "hello"; p[0] = 'H';“ in C führt in vielen Umgebungen zu einem abnormalen Abbruch. Welcher Grund ist richtig?
  3. Welche Kombination der obigen globalen Variablen wird im Allgemeinen in der Section .bss abgelegt?
  4. Wo liegt während der Ausführung eine in einer C-Funktion deklarierte lokale Variable ohne static (automatische Variable)?
  5. Aus welchem Bereich eines Prozesses wird der mit malloc in C reservierte Speicher im Allgemeinen genommen?

Vergleiche zu diesem Thema