malloc

Il y en a deux :

  • malloc pour allouer un objet ;
  • calloc pour allouer un tableau d’objets.

La fonction malloc, dont la signature est

void * malloc(size_t size) ;

retourne un pointeur (de type void *, c’est à dire générique) sur un espace mémoire réservé à un objet de taille size (en octets) ou bien Null si la demande a échoué (faute de mémoire, ou plus précisément faute de size octets contigus). size_t est un type entier non signé correspondant au type retourné par la fonction sizeof.

Il est important d’indiquer que pour malloc (contrairement à calloc) la mémoire allouée n’est pas initialisée.

int *pentiers ; pentier = malloc(sizeof(int)) ; /* réservation d’un entier en mémoire */

Depuis le C ANSI, il n’est plus obligatoire de faire une conversion explicite :

pentier = (int *) malloc(sizeof(int)) ;

La fonction calloc, dont la signature est :

void * calloc(size_t nobj, size_t size) ;

retourne un pointeur (également générique) sur un espace mémoire réservé à un tableau de bobj objets, tout de taille size octets, ou bien Null si la demande a échoué.

int * ptable ;

ptable = calloc(3, sizeof(int)) ;

La mémoire est initialisée avec la valeur 0.

» Glossaire du langage C