Différence clé - Allocation de mémoire statique vs dynamique
En programmation, il est nécessaire de stocker des données de calcul. Ces données sont stockées en mémoire. Les emplacements de mémoire pour stocker des données dans la programmation informatique sont appelés variables. Les variables ont un type de données spécifique. Par conséquent, la mémoire est allouée pour exécuter les programmes. La mémoire peut être allouée de deux manières. Ce sont l'allocation de mémoire statique et l'allocation de mémoire dynamique. Dans l'allocation de mémoire statique, une fois que la mémoire est allouée, elle ne peut pas être modifiée. La mémoire n'est pas réutilisable. Mais dans l'allocation de mémoire dynamique, une fois que la mémoire est allouée, elle peut être modifiée. La principale différence entre l'allocation de mémoire statique et dynamique est que dans l'allocation de mémoire statique, une fois la mémoire allouée, la taille de la mémoire est fixe, tandis que dans l'allocation de mémoire dynamique, une fois la mémoire allouée, la taille de la mémoire peut être modifiée.
Qu'est-ce que l'allocation de mémoire statique ?
Dans l'allocation de mémoire statique, la mémoire allouée est fixe. Une fois la mémoire allouée, elle ne peut plus être modifiée. La mémoire ne peut pas être augmentée ou diminuée. Par exemple, en langage C si le programmeur écrit int x, ce qui signifie que la variable peut stocker une valeur entière. Le nombre d'octets dépend de l'ordinateur. Il peut aussi y avoir des tableaux. Par exemple. entier x [5]; Ce x est un tableau qui peut stocker une séquence de données qui sont du même type. Il peut stocker cinq éléments entiers. Il ne peut pas stocker plus de cinq éléments. En Java, un tableau peut être créé sous la forme, int arr=new int[5]; Le tableau 'arr' peut stocker 5 valeurs entières et ne peut pas en stocker plus.
Figure 01: Méthodes d'allocation de mémoire
Dans l'allocation de mémoire statique, une fois les variables allouées, elles restent permanentes. Après l'allocation initiale, le programmeur ne peut pas redimensionner la mémoire. Si le programmeur a alloué un tableau pouvant stocker 10 éléments, il n'est pas possible de stocker des valeurs supérieures à la quantité spécifiée. Si le programmeur a initialement alloué un tableau pouvant contenir 10 éléments, mais n'avait besoin que de 5 éléments, il y a alors un gaspillage de mémoire. Cette mémoire n'est plus nécessaire, mais il n'est pas non plus possible de réutiliser la mémoire. L'allocation de mémoire statique est fixe mais la mise en œuvre est simple et facile, et elle est également rapide.
Qu'est-ce que l'allocation de mémoire dynamique ?
Parfois, il est nécessaire de changer la taille de la mémoire. Ainsi, la mémoire peut être allouée dynamiquement. En fonction des insertions et des suppressions d'éléments de données, la mémoire peut augmenter ou diminuer. C'est ce qu'on appelle l'allocation de mémoire dynamique.
En langage C, fichier d'en-tête stdlib.h, il existe quatre fonctions pour l'allocation dynamique de la mémoire. Ils sont calloc, malloc, realloc et free. La fonction malloc() alloue une taille requise d'octets et renvoie un pointeur vide, pointant le premier octet de la mémoire allouée. La fonction calloc() alloue une taille requise d'octets et les initialise à zéro. Retourne ensuite un pointeur vide vers la mémoire. La fonction free() est utilisée pour réallouer la mémoire allouée. Et la fonction realloc peut modifier la mémoire précédemment allouée. Après avoir alloué de la mémoire à l'aide de calloc ou de malloc, la taille de la mémoire est fixe, mais elle peut être augmentée ou diminuée à l'aide de la fonction realloc. En Java, les collections peuvent être utilisées pour l'allocation dynamique de mémoire.
Le principal avantage de l'allocation dynamique de mémoire est qu'elle économise de la mémoire. Le programmeur peut allouer de la mémoire ou libérer de la mémoire si nécessaire. La mémoire peut être réallouée pendant l'exécution et peut libérer de la mémoire lorsqu'elle n'est pas requise. L'allocation de mémoire dynamique est également plus efficace que l'allocation de mémoire statique. Un inconvénient est que la mise en œuvre de l'allocation dynamique de mémoire est complexe.
Quelles sont les similitudes entre l'allocation de mémoire statique et dynamique ?
- Les deux sont des mécanismes d'allocation de mémoire.
- Les deux doivent être implémentés manuellement par le programmeur.
Quelle est la différence entre l'allocation de mémoire statique et dynamique ?
Allocation de mémoire statique vs dynamique |
|
L'allocation de mémoire statique est une méthode d'allocation de mémoire, et une fois que la mémoire est allouée, elle est fixe. | L'allocation de mémoire dynamique est une méthode d'allocation de mémoire, et une fois que la mémoire est allouée, elle peut être modifiée. |
Modification | |
Dans l'allocation de mémoire statique, il n'est pas possible de redimensionner après l'allocation initiale. | Dans l'allocation de mémoire dynamique, la mémoire peut être minimisée ou maximisée en conséquence. |
Implémentation | |
L'allocation de mémoire statique est facile à mettre en œuvre. | L'allocation mémoire dynamique est complexe à mettre en œuvre. |
Vitesse | |
En mémoire statique, l'exécution de l'allocation est plus rapide que l'allocation de mémoire dynamique. | En mémoire dynamique, l'exécution de l'allocation est plus lente que l'allocation de mémoire statique. |
Utilisation de la mémoire | |
En allocation de mémoire statique, impossible de réutiliser la mémoire inutilisée. | L'allocation mémoire dynamique permet de réutiliser la mémoire. Le programmeur peut allouer plus de mémoire si nécessaire. Il peut libérer la mémoire si nécessaire. |
Résumé - Allocation de mémoire statique vs dynamique
En programmation, l'allocation de mémoire statique et l'allocation de mémoire dynamique sont deux mécanismes d'allocation de mémoire. La différence entre l'allocation de mémoire statique et dynamique est que dans l'allocation de mémoire statique une fois la mémoire allouée, la taille de la mémoire est fixe tandis que dans l'allocation de mémoire dynamique, une fois la mémoire allouée, la taille de la mémoire peut être modifiée. Le programmeur peut décider si la mémoire doit être statique ou dynamique en fonction de l'application.
Téléchargez le PDF de l'allocation de mémoire statique vs dynamique
Vous pouvez télécharger la version PDF de cet article et l'utiliser à des fins hors ligne conformément à la note de citation. Veuillez télécharger la version PDF ici: Différence entre l'allocation de mémoire statique et dynamique