Maison > développement back-end > C++ > Combien de temps durent les variables statiques dans les fonctions C ?

Combien de temps durent les variables statiques dans les fonctions C ?

Patricia Arquette
Libérer: 2024-12-30 14:03:22
original
1012 Les gens l'ont consulté

How Long Do Static Variables in C   Functions Live?

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 :

  • Le constructeur est appelé lors de la déclaration initiale.
  • Le destructeur est appelé à la fin du programme ou lorsque la variable sort de la portée (par exemple, sortie de fonction).

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);
}
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal