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.
Différence entre calloc et malloc en C

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.
 
 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *