Durée de vie
La « durée de vie » est la période pendant l'exécution d'un programme où une variable ou une fonction existe.la durée de stockage de l'identificateur détermine sa durée de vie.
un identificateur déclaré avec le stockage-classe- *spécificateur *statique a la durée de stockage statique.les identificateurs avec la durée de stockage statique (également appelée « globale ») ont le stockage et une valeur définie pour la durée d'un programme.Le stockage est réservé et la valeur signalée de l'identificateur est initialisée uniquement une fois, avant le démarrage du programme.Un identificateur déclaré avec une liaison externe ou interne a également la durée de stockage statique (consultez liaison).
Un identificateur déclaré sans spécificateur de classe de stockage de statique a la durée automatique de stockage s'il est déclaré dans une fonction.Un identificateur à la durée automatique de stockage (« un identificateur local ») a le stockage et une valeur définie uniquement dans le bloc où l'identificateur est défini ou déclaré.Un identificateur automatique est nouveau stockage alloué à chaque exécution du programme entre le bloc, et il perd son stockage (et sa valeur) lorsque le programme se ferme le bloc.Les identificateurs dans une fonction sans la liaison ont également la durée automatique de stockage.
Les règles suivantes spécifient si un identificateur a la durée de vie (automatique) globale (statique) ou locale :
Toutes les fonctions ont une durée de vie statique.par conséquent ils existent à tout moment pendant l'exécution du programme.Les identificateurs déclarés au niveau externe (autrement dit, en dehors de tous les blocs dans le programme au même niveau des définitions de fonction) ont toujours les durées de vie (statiques globales).
Si une variable locale a un initialiseur, la variable est initialisée chaque fois qu'il est créée (sauf si elle est déclarée comme statique).Les paramètres de fonctions ont également la durée de vie locale.Vous pouvez spécifier la durée de vie globales d'un identificateur dans un bloc en incluant le spécificateur de classe de stockage de statique dans sa déclaration.statiqueune fois déclaré, la variable conserve sa valeur d'une entrée du bloc au suivant.
Bien qu'un identificateur à une durée de vie globale existe dans toute l'exécution du programme source (par exemple, une variable déclarée de façon externe ou une variable locale déclarée avec le mot clé de statique ), il n'est pas forcément visible à toutes les parties du programme.Consultez portée et visibilité pour plus d'informations sur la visibilité, et voir le classes de stockage pour une révision du stockage-classe-spécificateur non terminal.
La mémoire peut être allouée en fonction de les besoins (dynamique) si créé à l'aide de routines de bibliothèque spéciale telles que malloc.Étant donné que l'allocation dynamique de la mémoire utilise des routines de bibliothèque, ce n'est pas considéré comme une partie du langage.Consultez la fonction de malloc dans la référence de la bibliothèque Runtime.