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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.