4.6.3 Allocation dynamique en C

Bien sur, ce que l'on va faire revient au même que l’allocation statique, dans le sens où on obtient bien un tableau de la même taille, c'est juste que l'on s'y prend autrement.

Voici le prototype de la fonction d'allocation :

1
void *malloc(size_t size);

Le type size_t est en fait un long unsigned int, c'est la taille que l'on veut alloué. Et le void* retourné correspond au pointeur alloué.

Mais je ne connaît pas par cœur la taille de tout les types.

Moi non plus je vous rassure, nous avons une "textit{fonction}" (en fait c'est une macro) qui fait ça pour nous : sizeof(type)

Cette macro nous renvoie la taille du type qu'on lui a passé.

Regroupons tout cela, voici comme il faut faire (en C) :

1
2
3
4
#include <stdlib.h>

int* tableauEntiers = malloc(sizeof(int)*50);
char* phrase = malloc(sizeof(char)*100);

Il ne faut as oublier de mettre l'include de la stdlib.h sinon le compilateur ne connaîtra pas les fonctions malloc et free (plus loin).

Tout ce que vous avez alloué dynamiquement, vous devez le dés-allocation :

Pour cela nous avons la fonction de dés-allocation free :

1
void free(void *ptr);

Le void* correspond à un pointeur vers n'importe quel type.

1
2
free(tableauEntiers);
free(phrase);