Allocation et free d'un double pointeur.
Bonjour,
Je voudrais savoir se qu'il se passe lorsque l'on malloc. Je sais que l'orsque l'on malloc il y à une limite et que l'on repousse cette limite en malloquant. J'ai un peu de mal à visialiser la chose.
Pour l'exemple d'un char**, si je voulais malloc une grille pour un tetris, ce que je faisais était:
Code:
1 2 3 4 5 6 7 8 9 10
|
char **tab;
int i = 0;
tab = malloc(20*sizeof(char*));
while (i < 20)
{
tab[i] = malloc(10*sizeof(char));
i++;
} |
Et si je dois free:
Code:
1 2 3 4
|
while (i < 20)
free(tab[i++]);
free(tab); |
Le problème c'est que les "mini" malloc, ce de ma boucle sont, selon moi, des adresse à l'intérieur de mon adresse renvoyé par le gros malloc. Donc si je free le gros malloc je devrait aussi free ce à l'intérieur de celui-ci.
Merci de bien vouloir m'expliquer la chose.