Next: Exercice
Up: Structures, unions et énumérations
Previous: Détermination de la taille
Sous-sections
Allocation et libération d'espace pour les structures
Nous allons voir dans ce paragraphe trois fonctions de la bibliothèque standard
permettant d'allouer et de libérer de l'espace.
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.
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));
Elle admet deux paramètres :
- -
- le premier est le nombre d'éléments désirés ;
- -
- le second est la taille en octets d'un élément.
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 :
#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].
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);
Next: Exercice
Up: Structures, unions et énumérations
Previous: Détermination de la taille
Bernard Cassagne
1998-12-09