Qu'est-ce que l'allocation de mémoire dynamique?
L'allocation dynamique de mémoire, également appelée allocation de mémoire basée sur le tas, est un type de gestion de la mémoire qui est très contrasté par l'allocation de mémoire statique. Dans l'allocation de mémoire dynamique, le programmeur indique à l'ordinateur la quantité de mémoire à allouer pour chaque programme et la durée de conservation de la mémoire. Cela résout bon nombre des problèmes liés à l'allocation de mémoire statique, tels que la surutilisation de la mémoire et les programmes bloqués. Bien que cela résolve de nombreux problèmes, si le programmeur oublie de dire à la mémoire de vider la mémoire, la mémoire dynamique peut devenir un problème.
Les ordinateurs utilisent par défaut une allocation de mémoire statique. Cela signifie que la mémoire conserve les programmes lors de leur utilisation, même si le programme n'est plus utilisé ou si la mémoire en attente devient dangereuse ou constitue un obstacle à la performance. Par exemple, si l'utilisateur arrête d'exécuter un programme prenant 2 mégaoctets (Mo) sur une machine de 3 Mo et qu'un deuxième programme nécessite 2 Mo supplémentaires, le deuxième programme ne fonctionnera pas. Cela est dû au fait qu'il ne reste pas assez de mémoire dans l'ordinateur pour l'autre programme.
Avec l'allocation de mémoire statique, l'utilisateur ou le programmeur ne peut pas spécifier la quantité de mémoire qu'il souhaite stocker, pas plus qu'il ne peut demander à la mémoire statique de vider la mémoire pour libérer des ressources. C'est pourquoi les utilisateurs avancés utilisent souvent l'allocation de mémoire dynamique. Le programmeur est en mesure de contrôler tout ce qui concerne la mémoire, y compris le temps de conservation des ressources.
Par exemple, le programmeur peut définir une allocation dynamique de mémoire pour ne conserver que 1 Mo ou moins, ce qui permettrait d'économiser suffisamment de mémoire système pour permettre à d'autres programmes de s'ouvrir. Cela peut être fait car la mémoire statique conserve généralement tout ce qui concerne le programme, tandis que la mémoire dynamique permet aux programmeurs de le définir à une valeur inférieure qui contient certaines données, mais pas tout. Dans le même temps, la mémoire statique sera toujours nécessaire et peut être définie dans ce schéma d'allocation.
Un problème potentiel avec l'allocation de mémoire dynamique - un problème qui entre rarement en jeu - est que la mémoire dynamique peut se remplir si le programmeur oublie de définir une valeur temporelle. Si aucune valeur temporelle n'est définie, contrairement à la mémoire statique qui finira par libérer de la mémoire, la mémoire dynamique conservera les informations. Si le programme a une application de vidage de la mémoire, et la plupart le font, il s'activera après un certain temps pour vider la mémoire. Il est toujours recommandé de définir une valeur temporelle pour l’allocation de mémoire.