L’allocation (réservation) automatique des variables a des inconvénients :

L’allocation dynamique permet de résoudre ces problèmes. La mémoire est allouée à la demande avec la fonction :

void* malloc (size_t taille);

Cette fonction réserve un espace de taille octets et en retourne l’adresse (void* → pointeur générique)

<aside> ⚠️ malloc retourne NULL en cas d’échec

</aside>


La mémoire allouée peut (doit) être libérée avec la fonction :

void free(void *ptr);

<aside> ☝ Penser à inclure stdlib.h pour utiliser malloc de manière implicite.

</aside>

Exemples d’utilisations

struct Point {
	int x;
	int y;
};

struct Point *ptr_point;
ptr_point = malloc(sizeof(struct Point));
if (ptr_point != NULL){
	// utilisation de ptr_point : (*ptr_point).x;
	// idem à ptr_point -> x
	free(ptr_point);
}

<aside> 💡 sizeof retourne la taille nécessaire a allouer pour

</aside>

int *tab = malloc(47232 *sizeof(int));
// tableau de 47232 entiers

if (tab == NULL){
	printf("Erreur \\n");
	exit(n);
}

// utilisation de tab[0]...tab[47231]
free(tab);