Durée de vie des variables statiques dans les fonctions C
Déclarer une variable comme statique dans la portée d'une fonction garantit son initialisation une seule fois, en conservant sa valeur à travers appels de fonctions. Comprendre sa durée de vie précise est crucial.
Quand les variables statiques sont-elles créées et détruites ?
Les variables statiques dans une fonction ont une durée de vie qui s'étend de la première rencontre avec leur déclaration à la fin du programme. Cela signifie que :
Suivi de l'ordre de construction/destruction
Détermination de l'ordre La construction et la destruction des variables statiques sont essentielles, en particulier dans les environnements multithread. La norme stipule que les destructeurs d'objets statiques sont exécutés dans l'ordre inverse de l'achèvement de la construction.
Exemple d'implémentation
Considérez l'extrait de code suivant :
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); }
Sortie :
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
Cela démontre la durée de vie et l'ordre de construction/destruction des variables statiques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!