Allocation mémoire dynamique en C : Comprendre malloc() avec exemples pratiques
Qu'est-ce que malloc() en C ?
Dans la bibliothèque standard C, malloc() – abréviation de « memory allocation » – réserve dynamiquement un bloc contigu de mémoire à l'exécution. La fonction retourne un pointeur void* vers le début de ce bloc, que vous pouvez caster vers n'importe quel type de pointeur nécessaire.
Syntaxe
ptr = (cast_type *)malloc(byte_size);
Où :
ptrest un pointeur ducast_typespécifié.byte_sizeest le nombre d'octets à allouer.
Exemple :
ptr = (int *)malloc(50);
Après cet appel, 50 octets de mémoire sont réservés, et ptr pointe vers le premier octet de cet espace.
Exemple pratique
#include <stdlib.h>
#include <stdio.h>
int main() {
int *ptr;
ptr = malloc(15 * sizeof(*ptr)); /* Alloue de l'espace pour 15 entiers */
if (ptr != NULL) {
*(ptr + 5) = 480; /* Assigne 480 au sixième entier */
printf("Value of the 6th integer is %d", *(ptr + 5));
}
return 0;
}
Sortie :
Value of the 6th integer is 480
Points clés à retenir
- Utiliser
sizeof(*ptr)au lieu desizeof(int)rend le code résilient aux changements ultérieurs du type du pointeur. - Si le système ne peut pas satisfaire la requête,
malloc()retourneNULL; vérifiez toujours le pointeur nul avant d'utiliser la mémoire. - Le bloc alloué est contigu et peut être traité comme un tableau. L'arithmétique de pointeurs est préférée à l'opérateur d'indexation pour éviter de modifier la valeur du pointeur original.
malloc() fonctionne avec tout type de données – y compris les caractères, structures et types définis par l'utilisateur – offrant une gestion flexible de la mémoire pour les programmeurs C.
Langue C
- Maîtriser le switch-case en C++ : Syntaxe, utilisation et exemples pratiques
- Maîtriser l'allocation de tableaux dynamiques en C++ : Guide pratique avec exemples de code
- Maîtriser les pointeurs en C++ : Concepts, exemples et applications pratiques
- Surcharge d'opérateurs en C++ : Guide pratique avec exemples de code
- Les structures en C++ expliquées avec un exemple pratique
- Maîtriser std::map en C++ : Guide complet avec exemples de code
- Maîtriser std::list en C++ : Syntaxe, Fonctions et Exemples Pratiques
- Les Fonctions en C++ Expliquées avec des Exemples de Code Pratiques
- calloc() en C : Allocation mémoire initialisée à zéro et exemple pratique