Bonjour,

J'ai le code suivant, mais je ne comprends pas pourquoi ça plante (la compilation se passe correctement mais le débugger dit qu'à l'exécution il y a une erreur de segmentation sur free(t))...


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
#include <stdio.h>
#include <stdlib.h>
 
typedef struct {
 int **test;
 int w, h;
} S;
 
int main(void) {
 
 S *t = malloc(sizeof(t));
 
 int i;
 t->test = malloc(8 * sizeof(int*));
 for (i = 0; i < 8; i++)
  t->test[i] = malloc(8 * sizeof(int));
 
 t->h = 0;
 t->w = 0;
 t->test[t->h][t->w] = 1;
 
 for (i = 0; i < 8; i++)
  free(t->test[i]);
 free(t->test);
 free(t);
}
Quelques éclaircissements ne seraient pas de refus !
Merci