Heim >Backend-Entwicklung >C++ >Wo werden statische Variablen in ausführbaren C- und C-Dateien gespeichert?

Wo werden statische Variablen in ausführbaren C- und C-Dateien gespeichert?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-03 11:28:40134Durchsuche

Where Are Static Variables Stored in C and C   Executable Files?

Statische Variablenspeicherung in C und C

Statische Variablen sind ein einzigartiger Variablentyp in C und C, die in bestimmten Segmenten ausführbarer Dateien gespeichert werden, um Namen zu vermeiden Kollisionen. Im bereitgestellten Codebeispiel funktionieren sie trotz der gleichen Namen „foo“ und „bar“ in unterschiedlichen Übersetzungseinheiten unabhängig voneinander mit ihren inkrementierten Werten. Diese Unabhängigkeit wirft die Frage auf: Wo werden diese statischen Variablen in der ausführbaren Datei gespeichert?

Um den Speicherort zu verstehen, ist es wichtig zu berücksichtigen, ob die statischen Variablen mit Null initialisiert sind. Wenn dies der Fall ist, werden sie normalerweise im Segment „.BSS“ (Block Started by Symbol) platziert. In diesem Segment werden nicht initialisierte Daten gespeichert, die standardmäßig auf Null gesetzt sind. Beispiel: „foo = 1;“ würde in „.DATA“ gespeichert werden.

In der Zwischenzeit werden nicht mit Null initialisierte statische Variablen im „.DATA“-Segment platziert. Dieses Segment enthält initialisierte Daten, z. B. „foo = 10;“. Die Aufteilung in diese Segmente gewährleistet keine Namenskollisionen und ermöglicht eine effiziente Speicherzuweisung.

Das obige ist der detaillierte Inhalt vonWo werden statische Variablen in ausführbaren C- und C-Dateien gespeichert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn