13.4.1 Demander de la place en mémoire : la fonction malloc

Icône de l'outil pédagogique Demander de la place en mémoire : la fonction malloc

La fonction malloc permet de réserver un emplacement mémoire dans le tas. La taille en octets de cet emplacement doit lui être précisée, en général avec sizeof.

L'utilisation de malloc est réalisée selon la syntaxe suivante (voir plus loin une version avec sizeof) :

type_var* ptr ;
ptr = (type_var*)malloc( nb_octets ); /*nb_octets est à calculer avec sizeof */
if (ptr==NULL) ...

A l'exécution, malloc réserve une zone mémoire de nb_octets octets et renvoie l'adresse du premier octet de la zone réservée (ou NULL si la mémoire disponible est insuffisante).

L'affectation ptr= permet ensuite de ranger cette adresse dans le pointeur ptr. Il faut convertir la valeur renvoyée par malloc avec le cast adéquat.

malloc renvoie le pointeur NULL si la mémoire qui reste dans le tas est insuffisante pour satisfaire la demande (ou si nb_octets=0). Le test de la valeur renvoyée par malloc est donc indispensable.

L'utilisation de l'opérateur sizeof est recommandée pour éviter le calcul « à la main » de nb_octets.
L’utilisation de malloc qui suit est donc préférable :

ptr = (type_var *)malloc( sizeof(type_var) * nb_var );
if (ptr==NULL) ...

Cet appel permet de réserver le nombre d'octets nécessaires pour nb_var variables de type type_var.