Différence entre allocation dynamique et allocation statique
L’allocation de mémoire en programmation est très importante pour stocker des valeurs lorsque vous les affectez à des variables. L’attribution est faite avant et/ou au moment de l’exécution du programme. Cela alloue finalement de la mémoire pour les variables déclarées par un programmeur via le compilateur. La mémoire peut être allouée de deux manières soit statiquement ou dynamiquement.
Qu’est-ce que l’allocation 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 changée. Par exemple, en langage C si le programmeur écrit int x[10];
x est un tableau pouvant stocker une séquence de données du même type. Il peut stocker dix éléments entiers. Il ne peut pas stocker plus de dix éléments.
Qu’est-ce que l’allocation dynamique?
Parfois, il est nécessaire de changer la taille de la mémoire. Donc, la mémoire peut être allouée dynamiquement. En fonction d’ajout et de suppression, la mémoire peut être augmenté ou diminuée. C’est ce qu’on appelle l’allocation dynamique de mémoire.
Dans le fichier d’en-tête stdlib.h en langage C, il existe quatre fonctions pour l’allocation dynamique de mémoire. Ils sont calloc, malloc, realloc et free. La fonction malloc() alloue une taille d’octets requise et retourne un pointeur vide, en pointant vers le premier octet de la mémoire allouée. La fonction calloc() alloue une taille d’octets requise et les initialise à zéro et retourne ensuite un pointeur vide. La fonction free() est utilisée pour réaffecter la mémoire allouée. Et la fonction realloc peut modifier la mémoire allouée précédemment. Après avoir alloué de la mémoire en utilisant calloc ou malloc, la taille de la mémoire est fixe, mais vous pouvez l’augmenter ou la diminuer en utilisant la fonction realloc.
Le principal avantage de l’allocation dynamique de la mémoire est qu’elle permet d’économiser la mémoire. Le programmeur peut allouer la mémoire ou libérer la mémoire si nécessaire. La mémoire peut être réaffectée lors de l’exécution et peut libérer de la mémoire lorsque cela n’est pas nécessaire. L’allocation de mémoire dynamique est également efficace que l’allocation de mémoire statique. L’inconvénient est que la mise en œuvre de l’allocation de mémoire dynamique est complexe.
Table de comparaison
Allocation statique | Allocation dynamique |
---|---|
Dans ce cas, les variables sont allouées de manière permanente | Dans ce cas, les variables ne sont allouées que si votre unité de programme est active |
L’allocation est faite avant l’exécution du programme | L’allocation est faite pendant l’exécution du programme |
Il utilise la structure de données appelée pile pour implémenter l’allocation statique | Il utilise la structure de données appelée tas pour mettre en œuvre l’allocation dynamique |
Moins efficace | Plus efficace |
Pas de possibilité de réutilisation de la mémoire | La mémoire est réutilisable et peut être libérée lorsqu’elle n’est pas nécessaire. |
Conclusion
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 réside dans le fait 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 que la mémoire est 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.