Aller au contenu

Chapitre 14 : Allocation Dynamique de Mémoire

Apprenez à demander de la mémoire au système pendant que votre programme s'exécute, permettant une flexibilité totale sur la taille des données.

Concepts abordés

  • Le Tas (Heap) : La zone mémoire dédiée aux allocations dynamiques, contrairement à la Pile (Stack) utilisée pour les variables locales.
  • Fonctions d'allocation :
    • malloc : Alloue un bloc de mémoire brute.
    • calloc : Alloue et initialise la mémoire à zéro.
    • realloc : Redimensionne un bloc déjà alloué (pour agrandir un tableau par exemple).
  • Libération de mémoire : Utilisation de free pour rendre la mémoire au système.
  • Fuites de mémoire (Memory Leaks) : Comprendre les dangers de l'oubli du free.

Explications du code

memoire_dynamique.c

Démontre comment créer un tableau dont la taille est choisie par l'utilisateur, comment utiliser realloc pour créer un tableau qui "grandit" automatiquement au fur et à mesure des besoins, et comment allouer dynamiquement des chaînes de caractères.

Conseils et astuces

  • L'unité de mesure : malloc prend une taille en octets. Utilisez toujours sizeof (ex: malloc(n * sizeof(int))) pour garantir la portabilité.
  • Après le free : Une bonne pratique consiste à mettre votre pointeur à NULL immédiatement après avoir appelé free(p). Cela évite d'essayer d'utiliser accidentellement une zone mémoire qui a été libérée.
  • Vérification : Comme pour les fichiers, vérifiez toujours si malloc a renvoyé NULL (ce qui arrive si le système n'a plus de mémoire disponible).