Programmer en langage C
198
© Éditions Eyrolles
besoin d’inclure vous-même ce fichier car cela est déjà prévu dans stdlib.h. Le type exact
lui correspondant dépend de l’implémentation. Cela signifie donc que la taille maximale des
objets que l’on peut s’allouer par malloc dépend de l’implémentation. (En pratique, toutefois, on peut toujours compter sur un minimum de 64 Ko).
Enfin, il faut savoir que malloc fournit un pointeur nul (NULL) dans le cas où l’allocation
mémoire a échoué. Bien entendu, dans un programme opérationnel, il sera nécessaire de
s’assurer qu’aucun problème de cette sorte n’apparaît.
1.2 La fonction free
L’un des intérêts essentiels de la gestion dynamique est de pouvoir récupérer des emplacements dont on n’a plus besoin. Le rôle de la fonction free est de libérer un emplacement
préalablement alloué.
Voici un exemple de programme, exécuté ici dans un environnement DOS. Il vous montre
comment malloc peut profiter d’un espace préalablement libéré sur le tas.
Notez que la dernière allocation a pu se faire dans l’espace libéré par le précédent appel de
free.
Exemple d’utilisation de la fonction free
#include
#include
main()
{
char * adr1, * adr2, * adr3 ;
adr1 = malloc (100) ;
printf ("allocation de 100 octets en %p\n", adr1) ;
adr2 = malloc (50) ;
printf ("allocation de 50 octets en %p\n", adr2) ;
free (adr1) ;
printf ("libération de 100 octets en %p\n", adr1) ;
adr3 = malloc (40) ;
printf ("allocation de 40 octets en %p\n", adr3) ;
}
allocation de 100 octets en 06AC
allocation de 50 octets en 0714
libération de 100 octets en 06AC
allocation de 40 octets en 06E8
Delannoy Livre.book Page 198 Mercredi, 6. mai 2009 4:26 16
Précédent

- 211/281

Suivant