Article de reference

Variable dynamique

( Apprenez comment et quand supprimer ce message ) En programmation informatique , une variable dynamique est une variable locale créée pour résider dans une zone mémoire alloué...

programmation informatique , une variable dynamique est une variable locale créée pour résider dans une zone mémoire allouée manuellement et pouvant être allouée et libérée. On distingue trois types de variables dynamiques : les variables dynamiques implicites du tas, les variables dynamiques explicites du tas et les variables dynamiques perdues du tas ( pointeurs non initialisés ). Leur portée est indéfinie et leur étendue dynamique. Elles sont principalement utilisées dans des langages de programmation spécialisés tels que Lisp , Ruby , APL , PHP , TcL , TeX et Perl .

JavaScript , PHP et APL) . Plus flexibles que les variables dynamiques explicites sur le tas, elles permettent d’allouer une plus grande quantité de mémoire lorsque la taille requise est inconnue.
C++ et les objets en Java.
fuite de mémoire . Elle se produit lorsqu'un premier pointeur pointe vers une nouvelle variable dynamique du tas, puis que ce pointeur est déplacé vers une autre variable dynamique du tas. La première variable dynamique du tas, si elle n'est pas utilisée, est perdue.
LISP à la fin des années 1950, le ramasse-miettes, en tant que forme de gestion dynamique de la mémoire, était utilisé pour l'allocation automatique et dynamique de la mémoire. Son but était d'automatiser la gestion de la mémoire, évitant ainsi au programmeur de supprimer manuellement l'espace mémoire utilisé. Des algorithmes tels que le marquage et le balayage , le comptage de références et l'algorithme de copie étaient fondamentaux pour le concept de ramasse-miettes. Bien que John McCarthy ait développé ces algorithmes, McCarthy et Marvin Minsky ont tous deux joué un rôle clé dans le développement de LISP.

Les concepts antérieurs de variable dynamique étaient utilisés dans ALGOL 68, qui prévoyait une allocation sur le tas et sur la pile pour l'affectation des variables. Le type pointeur et un ramasse-miettes limité étaient également utilisés pour l'allocation sur le tas.

Conçues en 1968-1969, les variables dynamiques ont été initialement nommées et définies en Pascal , un langage de programmation développé par Niklaus Wirth en 1970. Ces variables étaient décrites comme des pointeurs stockant la mémoire des variables référencées. L'allocation de mémoire aux pointeurs était effectuée par une commande NEWet sa libération par une autre DISPOSE.

Les objets dynamiques, les pointeurs et les différents types de variables dynamiques dans différents langages de programmation ont été décrits pour la première fois en détail dans le livre de 1989 de Robert Sebesta, « Concepts of Programming Languages ​​».

Adressage

Le mode d'adressage indirect est utilisé pour ces variables, leur adresse étant déterminée à l'exécution et non en assembleur. Pour les variables dynamiques basées sur la pile, le mode d'adressage par pile est employé, utilisant un pointeur de pile (SP) et un pointeur de cadre (FP). Lors d'une opération d'empilement (push), SP remonte, et lors d'une opération de dépilement (pop), SP descend ; FP sert de référence de décalage à partir de laquelle SP est calculé. Ces deux modes d'adressage sont utilisés dans l'architecture x86 .

Portée et étendue

En programmation, une variable dynamique est locale, contrairement à une variable statique (globale). Cela signifie qu'elle ne peut être utilisée que dans la fonction où elle est définie. La réutiliser avec une valeur différente nécessite de la libérer puis de la libérer. La durée de vie d'une variable dynamique est contrôlée par le programmeur. La mémoire qui lui est allouée est effectuée à l'exécution. Pour éviter les fuites de mémoire, la variable dynamique doit être libérée avant d'être réutilisée.

En termes simples, les variables dynamiques ont une portée indéfinie , ce qui signifie que leur liaison est visible par tout code exécuté dans le programme. Leur étendue dynamique , quant à elle, signifie que la liaison de la variable n'est visible qu'entre le moment de sa création et le moment où le contrôle quitte le code utilisant la variable dynamique lors de son exécution. C'est pourquoi elles ne sont pas visibles en Python, car toutes les variables créées sont globales ou ont une portée lexicale .

Les objets dynamiques sont créés dans la méthode principale lorsque leur nombre est inconnu, ce qui leur confère une plus grande flexibilité que les objets statiques grâce à l'allocation dynamique de mémoire . Dans l'extrait de code ci-dessous, le constructeur est automatiquement appelé lors de la création de Counterl'objet dynamique et la valeur 5 lui est assignée. Lorsque l'objet est manipulé, le destructeur est appelé et le résultat est affiché.*cdelete~Counter

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index