Heim > Backend-Entwicklung > C++ > Wo werden statische Variablen in C und C zugeordnet?

Wo werden statische Variablen in C und C zugeordnet?

Mary-Kate Olsen
Freigeben: 2024-12-29 15:06:12
Original
992 Leute haben es durchsucht

Where Are Static Variables Allocated in C and C  ?

Statische Variablenzuordnung in C und C

In C und C werden statische Variablen in bestimmten Segmenten einer ausführbaren Datei zugewiesen, um Namenskonflikte zwischen verschiedenen Übersetzungseinheiten zu vermeiden. Beim Kompilieren mehrerer Quelldateien, wie etwa der foo.c- und bar.c-Dateien im bereitgestellten Code, erstellt jede Übersetzungseinheit eine eigene Kopie der statischen Variablen.

Der Speicherort statischer Variablen hängt davon ab, ob Sie werden auf Null initialisiert oder nicht. Mit Null initialisierte Statiken werden im .BSS-Segment platziert, während nicht mit Null initialisierte Statiken in das .DATA-Segment gehen.

Im gegebenen Beispiel werden sowohl foo als auch bar auf Werte ungleich Null initialisiert. Daher werden sie im .DATA-Segment zugeordnet. Der Compiler reserviert im .DATA-Segment Platz für diese Variablen und ihre Werte werden dort gespeichert.

Wenn die ausführbare Datei verknüpft ist, werden die Inhalte der .DATA- und .BSS-Segmente in die entsprechenden Abschnitte des kopiert ELF-Datei. Das .DATA-Segment wird normalerweise in den .text-Abschnitt (Code) eingefügt, während das .BSS-Segment zur Laufzeit im BSS-Bereich des Programmspeichers zugewiesen wird.

In der GCC-Toolchain der Ort der Statik Variablen können mit der Option -Xlinker -d' untersucht werden, die die ELF-Abschnitte und ihren Inhalt anzeigt. Durch die Untersuchung der Abschnitte „.data“ und „.bss“ können Sie die Zuordnung Ihrer statischen Variablen überprüfen und sicherstellen, dass sie nicht miteinander in Konflikt geraten.

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

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage