Qu'est-ce que l'allocation de mémoire dynamique?
L'allocation de mémoire dynamique, également appelée allocation de mémoire basée sur un tas, est un type de gestion de la mémoire qui est fortement contrastée 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 combien de temps pour conserver la mémoire. Cela résout bon nombre des problèmes qui se produisent dans l'allocation de mémoire statique, tels que la surutilisation de la mémoire et les programmes bloqués. Bien qu'il résout de nombreux problèmes, si le programmeur oublie de dire à la mémoire de vider, la mémoire dynamique peut devenir un problème.
Les ordinateurs, par défaut, utilisent une allocation de mémoire statique. Cela signifie que la mémoire conserve des programmes lorsqu'ils sont utilisés, même si le programme n'est plus utilisé ou si la mémoire tenue devient dangereuse ou un obstacle à la performance. Par exemple, si l'utilisateur cesse d'exécuter un programme qui prend 2 mégaoctets (MB) sur une machine de 3 Mo, et un deuxième programme a besoin de 2 Mo, le deuxième programme ne fonctionnera pas. C'est parce qu'il n'y a pas enOUGH Memory laissé dans l'ordinateur pour l'autre programme.
Avec une allocation de mémoire statique, l'utilisateur ou le programmeur ne peut pas spécifier la quantité de mémoire qu'il souhaite stockée, et le programmeur ne peut pas dire à la mémoire statique de vider la mémoire pour libérer des ressources. C'est pourquoi les utilisateurs avancés utilisent souvent une allocation de mémoire dynamique. Le programmeur est capable de tout contrôler sur la mémoire, y compris la durée de maintien des ressources.
Par exemple, le programmeur peut définir une allocation de mémoire dynamique pour conserver seulement 1 Mo, ou moins, ce qui économiserait suffisamment de mémoire système pour permettre à d'autres programmes d'ouvrir. Cela peut être fait car la mémoire statique conserve généralement tout sur 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. En même temps, la mémoire statique sera toujours nécessaire, et elle peut être définie dans ce schéma d'allocation.
Un problème potentiel avec l'allocation de mémoire dynamique - celui 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 de temps n'est définie, contrairement à la mémoire statique qui finira par libérer la mémoire, la mémoire dynamique conservera les informations. Si le programme a une application de vidage à ordures, et la plupart le font, il s'activera après un certain temps pour effacer la mémoire. Il est toujours la meilleure pratique de définir une valeur de temps pour l'allocation de mémoire.