Lebensdauer statischer Variablen in C-Funktionen
Durch die Deklaration einer Variablen als statisch innerhalb des Gültigkeitsbereichs einer Funktion wird sichergestellt, dass sie nur einmal initialisiert wird und ihr Wert über die gesamte Laufzeit hinweg erhalten bleibt Funktionsaufrufe. Es ist von entscheidender Bedeutung, ihre genaue Lebensdauer zu verstehen.
Wann werden statische Variablen erstellt und zerstört?
Statische Variablen in einer Funktion haben eine Lebensdauer, die ab der ersten Begegnung mit ihrer Deklaration reicht zur Programmbeendigung. Das bedeutet:
Aufbau-/Zerstörungsreihenfolge verfolgen
Bestimmung der Reihenfolge Der Aufbau und die Zerstörung statischer Variablen ist insbesondere in Multithread-Umgebungen von entscheidender Bedeutung. Der Standard schreibt vor, dass Destruktoren statischer Objekte in der umgekehrten Reihenfolge des Konstruktionsabschlusses ausgeführt werden.
Implementierungsbeispiel
Beachten Sie den folgenden Codeausschnitt:
struct emitter { string str; emitter(const string& s) : str(s) { cout << "Created " << str << endl; } ~emitter() { cout << "Destroyed " << str << endl; } }; void foo(bool skip_first) { if (!skip_first) static emitter a("in if"); static emitter b("in foo"); } int main(int argc, char*[]) { foo(argc != 2); if (argc == 3) foo(false); }
Ausgabe:
C:>sample.exe Created in foo Destroyed in foo C:>sample.exe 1 Created in if Created in foo Destroyed in foo Destroyed in if C:>sample.exe 1 2 Created in foo Created in if Destroyed in if Destroyed in foo
Dies demonstriert die Lebensdauer und Konstruktions-/Zerstörungsreihenfolge statischer Variablen.
Das obige ist der detaillierte Inhalt vonWie lange leben statische Variablen in C-Funktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!