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.
#include <stdlib.h> struct personne *p; p = malloc(sizeof(struct personne));
#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);