Previous Page Next Page

11.8 L'allocation dynamique de mémoire et le concept de localité

Les définitions et déclarations locales peuvent être des définitions d'étiquettes, de constantes, de types, des déclarations de procédures, de fonctions et des déclarations de variables. Les objets qui sont définis respectivement déclarés à l'intérieur d'un sous-programme, que ce soit une procédure ou une fonction, sont dites locaux à celle-ci, c'est-à-dire ils ne peuvent être utilisés que par les instructions du sous-programme correspondant. Ils constituent, en quelque sorte, les outils de travail du sous-programme, et en dehors de celui-ci, on ne peut y accéder.

D'un autre côté, les définitions et déclarations faites au niveau du programme principal sont dites globales à tout le programme. Elles sont accessibles à l'intérieur de chaque sous-programme, y compris bien sûr du programme principal lui-même.

Quel est l'intérêt des variables locales?

Au cours de l'exécution d'un programme Turbo-Pascal, la mémoire centrale est divisée en segments différents. Le lecteur notera que la mémoire centrale n'est cependant pas accessible dans sa totalité au système Turbo-Pascal. Une partie en est déjà occupée par le système d'exploitation (DOS). L'espace-mémoire non encore alloué est utilisé par le code du programme, la bibliothèque "Run Time" [angl. run time library], des interfaces [angl. units], les variables globales et les constantes typées. Cette allocation de mémoire se fait au moment de la compilation d'un programme, donc avant l'exécution du programme. A cette allocation "statique" de mémoire s'ajoute, au cours de l'exécution de programme, l'allocation "dynamique" d'espace-mémoire.

En effet, tandis que l'espace-mémoire pour les variables globales est alloué de manière statique, l'espace-mémoire nécessaire aux variables locales est alloué dynamiquement au moment de l'exécution du sous-programme sur la pile d'exécution [angl. stack]. Après exécution du code du sous-programme, cet espace-mémoire sera remis à la disposition du système de programmation. Cette technique d'allocation mémoire est appelée allocation dynamique d'espace-mémoire. Son principe est le suivant: l'espace-mémoire sera alloué, à la demande, aux variables locales, durant le cours de l'exécution du sous-programme. Lors de la désactivation du sous-programme, il y a récupération des cellules-mémoire qui avaient été réservées lors de son activation.

Undisplayed Graphic

Figure 11.13 Allocation de mémoire pendant l'exécution d'un programme

La technique d'allocation dynamique de mémoire a donc pour avantages fondamentaux (1) d'économiser de l'espace-mémoire et (2) d'éviter des modifications inattendues des valeurs des variables au niveau global.

D'une manière générale, il faut bien comprendre que

• les valeurs stockées dans des variables locales seront détruites, l'exécution du sous-programme une fois terminée,

• la valeur d'une variable locale est non-définie à l'entrée du sous-programme.

TERMES TECHNIQUES

• allocation dynamique de mémoire

• allocation statique de mémoire

• pile d'exécution

Previous Page Next Page


© Aflo Informatique , 2003-2004