next up previous contents index
Next: Types entiers Up: No Title Previous: Valeurs de retour multiples

Durée de vie et mode d'allocation

  

La durée de vie d'un objet dans un programme est une portion de la durée d'exécution de ce programme.

Le mode d'allocation d'un objet global est statique et sa durée de vie est toute l'exécution du programme. Un objet local, s'il est déclaré static, a également un mode d'allocation statique et a une durée de vie qui s'étend de l'instant où sa définition est exécutée pour la première fois, par la fonction où elle est définie, jusqu'à la fin de l'exécution du programme ; l'initialisation éventuelle de cet objet n'a lieu qu'une fois. Par exemple, la fonction f suivante affiche le nombre de ses appels depuis le début du programme, grâce à sa variable statique compteur ; si cette variable n'était pas déclarée static, elle serait initialisée à zéro à chaque appel, donc la fonction afficherait toujours 1 :

void f() {
 static int compteur = 0;

 compteur++;
 printf("La fonction f a été appelée %d fois.\n", compteur);
}

Un objet local, c'est-à-dire résultant d'une définition à l'intérieur d'une fonction, et qui n'est pas déclaré static, a un mode d'allocation automatique et a pour durée de vie celle d'un bloc d'activation, c'est-à-dire d'une exécution de cette fonction. Si une fonction est invoquée plusieurs fois au cours du même programme, chaque invocation donne lieu à un nouvel objet.

Un objet créé dynamiquement, par un appel à la fonction malloc, a une durée de vie qui s'étend depuis le retour de malloc jusqu'à la fin de l'exécution du programme ou jusqu'à une dés-allocation de cet objet réalisée par la fonction free.


next up previous contents index
Next: Types entiers Up: No Title Previous: Valeurs de retour multiples
Jean-Philippe Chancelier
9/29/1998