Heim >Backend-Entwicklung >C++ >Wo werden statische Variablen in C- und C-ausführbaren Dateien gespeichert?
Statische Variablen spielen eine entscheidende Rolle in der C- und C-Programmierung und ermöglichen, dass Daten während der gesamten Lebensdauer von a bestehen bleiben Programm. Aber wo genau werden diese Variablen in einer ausführbaren Datei gespeichert, um sicherzustellen, dass es nicht zu Namenskollisionen kommt?
Berücksichtigen Sie die folgenden Codeausschnitte:
// foo.c static int foo = 1; void fooTest() { static int bar = 2; foo++; bar++; } // bar.c static int foo = 10; void barTest() { static int bar = 20; foo++; bar++; }
Beim Kompilieren und Verknüpfen dieser Dateien mit einer Hauptfunktion Wenn fooTest() und barTest() wiederholt aufgerufen werden, erhöhen sich die printf-Anweisungen unabhängig voneinander. Dies zeigt an, dass die Variablen „foo“ und „bar“ lokal für ihre jeweiligen Übersetzungseinheiten sind.
Die Zuweisung statischer Variablen in einer ausführbaren Datei hängt von ihrer Initialisierung ab.
Der spezifische Speicherort statischer Variablen kann je nach verwendeter Toolchain variieren. Nehmen wir für diese Diskussion an, dass wir die GNU Compiler Collection (GCC) verwenden.
Statische Variablen in C und C werden im .BSS- oder .DATA-Segment einer ausführbaren Datei gespeichert Datei abhängig von ihrer Initialisierung. Dadurch wird sichergestellt, dass jede statische Variable einen eindeutigen Speicherort hat und Namenskollisionen vermieden werden.
Das obige ist der detaillierte Inhalt vonWo werden statische Variablen in C- und C-ausführbaren Dateien gespeichert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!