1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
int i=0;
int* tab = (int *) malloc(sizeof(int)*15); /* Tu alloues donc 15 "int*", donc 15 pointeurs sur des int */
for{i=0;i<15;i++){
/* tab[i]=i; */ /* NON. Enfin c'est légal de faire ça, mais ce n'est probablement pas ce que tu veux faire. Ici, tu mets dans tab[0] l'adresse 0, qui ne t'es pas allouée, donc si tu accèdes à son contenu, tu plantes */
tab[i] = malloc (taille); /* taille à définir */
if (tab[i] == NULL)
break;
}
if (i != 15)
{
/* au moins une allocation a planté. On libère et on quitte */
for (j = i ; j >= 0 ; j--)
{ free tab[j] ;
tab[j] = NULL;
}
free (tab);
}
free(tab[4]);
free(tab[9]);
free(tab[14]);
tab = realloc(tab,sizeof(int)*12); |
Partager