13.4. Application des pointeurs : allocation dynamique malloc, free

Nous avons vu qu'il existe : – des variables statiques, occupant un emplacement mémoire déterminé à la compilation (exemple : variable locale static et variable globale) ; – des variables automatiques, créées en pile et détruites au fur et à mesure de l'exécution des fonctions où elles sont définies (exemple : variable locale « normale »). Il existe un troisième type de variables : les variables dynamiques, dont la création et la destruction dépendent de demandes explicites faites par le programme au cours de l'exécution. Elles sont situées dans une zone de la mémoire appelée le tas (heap).
Le principal intérêt des variables dynamiques est de définir de « grosses » structures de données dont la taille ou le nombre ne sont connus qu'à l'exécution : par exemple, tableaux de dimensions variables, listes chaînées. La gestion dynamique de données nécessite deux étapes : – l'allocation de la mémoire, réalisée par la fonction malloc ; – la libération de la mémoire, réalisée par la fonction free ; elle permettra de réutiliser la mémoire pour créer d'autres variables dynamiques. Les prototypes des fonctions de gestion dynamique de la mémoire se trouvent dans le fichier en‐tête stdlib.h de la bibliothèque standard du C. |