free (suite)
ATTENTION: Il faut libérer la mémoire dynamiquement allouée avant qu'il ne soit trop tard, c'est à dire avant que la variable qui pointe vers la zone allouée ne soit plus accessible.

Cas où elle n'est plus accessible:
void bidon(int nb)
{
int* pin;

pin = (int*) malloc(nb*sizeof(int));

if (pin == NULL) printf("erreur...");
else printf ("Allocation réussie ...");
}
/* on sort de bidon sans avoir libéré l'espace mémoire pointé par pin */
int main()
{
 bidon(30);
 
/* Il est trop tard ici pour libérer l'espace réservé par bidon pin n'est plus accessible */
}

int main ()
{
int* pin;

pin = (int*) malloc(30*sizeof(int));

if (pin == NULL) printf("erreur...");
else printf ("Allocation réussie ...");
pin =
(int*) malloc(30*sizeof(int)); /* trop tard!!! on vient de modifier pin sans avoir libéré l'espace réservé par le premier malloc */
...

}
suivant             plan