![]()
Allocation et libération d'espace pour les structures ![]()
![]()
![]()
![]()
![]()
Suivant: Exercice Début: Structures, unions et énumérations Précédent: Détermination de la taille
Paragraphes
Allocation et libération d'espace pour les structures
Nous allons voir dans ce chapitre trois fonctions de la bibliothèque standard permettant d'allouer et de libérer de l'espace.Allocation d'espace : fonctions malloc et calloc
Quand on crée une liste chaînée, c'est parce qu'on ne sait pas à la compilation combien elle comportera d'éléments à l'exécution (sinon on utiliserait un tableau). Pour pouvoir créer des listes, il est donc nécessaire de pouvoir allouer de l'espace dynamiquement. On dispose pour cela de deux fonctions malloc et calloc.
Allocation d'un élément : fonction malloc
La fonction malloc admet un paramètre qui est la taille en octets de l'élément désiré et elle rend un pointeur vers l'espace alloué. Utilisation typique :#include <stdlib.h> struct personne *p; p = malloc(sizeof(struct personne));Allocation d'un tableau d'éléments : fonction calloc
Elle admet deux paramètres :son but est d'allouer un espace suffisant pour contenir les éléments demandés et de rendre un pointeur vers cet espace. Utilisation typique :
- -
- le premier est le nombre d'éléments désirés ;
- -
- le second est la taille en octets d'un élément.
#include <stdlib.h> struct personne *p; int nb_elem; ... /* init de nb_elem */ p = calloc(nb_elem,sizeof(struct personne));On peut alors utiliser les éléments p[0], p[1], ...p[nb_elem-1]
.Libération d'espace : procédure free
On libère l'espace alloué par malloc ou calloc au moyen de la procédure free qui admet un seul paramètre : un pointeur précédemment rendu par un appel à malloc ou calloc. Utilisation typique :
#include <stdlib.h> struct personne *p; p = malloc(sizeof(struct personne)); ... /* utilisation de la structure allouée */ free(p);
30/9/1997