next up previous contents
Next: Point de vue pratique Up: Les bases... Previous: Accès à l'édition de

Stockage

Le type de stockage des objets est lié aussi à l'édition de lien et à la portée. Il est clair qu'un objet global accessible pour l'éditeur de liens doit être alloué dès le début de l'exécution du programme ce qui exclut toute allocation sur la pile d'exécution.

En général, on peut avoir trois types d'allocation, correspondant aux différentes zones d'adressage des processus. L'espace d'adressage peut se décomposer en quatre parties :

tabular69

Les deux premières sont statiques (c'est-à-dire entièrement définies à la compilation) alors que les deux dernières sont dynamiques (leur taille variant au cours de l'exécution du processus). L'allocation statique correspondra à une allocation dans la zone de données statique à la compilation ; dire qu'un objet est alloué dans la zone de pile signifie que le compilateur génère du code qui allouera de l'espace pour l'objet sur la pile quand ce code sera exécuté; la zone de tas concernera l'allocation dynamique.

En C++ (comme en C), le stockage d'un objet sera dit automatique pour un objet local, et l'objet sera alloué (sur la pile d'exécution) à chaque appel de la fonction où il est défini. En ce sens, les initialisations éventuelles ne sont pas des initialisations réalisées par le compilateur, mais seront réalisées à chaque entrée dans le bloc.

Le stockage sera dit statique si l'objet est alloué dans la zone de données statiques, l'objet existe dès le démarrage du processus et restera pendant toute la durée de vie du programme. Tous les objets globaux, les objets qualifiés par static ou extern seront statiques. Les initialisations des objets statiques sont de ``vraies'' initialisations réalisées à la compilation (une seule fois).




Mon Oct 20 14:02:48 MET 1997