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
freepour 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 :
mallocprend une taille en octets. Utilisez toujourssizeof(ex:malloc(n * sizeof(int))) pour garantir la portabilité. - Après le
free: Une bonne pratique consiste à mettre votre pointeur àNULLimmé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
malloca renvoyéNULL(ce qui arrive si le système n'a plus de mémoire disponible).