Bonjours,
Dans le cadres d'un projet, on doit réaliser un simulateur de robot multi-thread.
j'ai un petit souci avec mes structures pour représenter une grille.
voici les structures.
mon souci se situe au niveau de la création d'une grille.
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 typedef struct case_tag { int type; void *objet; pthread_t thread; pthread_mutex_t mutex; } Case_t; typedef struct Grille_tag { char *nom; int largeur; int hauteur; Case_t **grille; } Grille_t;
Jusque là, pas de souci mais quand je veux accéder a une case de ma grille pour l'initialiser, j'ai une erreur de segmentation.
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
27 Grille_t* Grille_Create( char *nom, int largeur, int hauteur ) { Grille_t *g = (Grille_t*)malloc( sizeof(Grille_t) ); if( g == NULL ) { printf("Grille_Create: malloc g.\n"); return NULL; } g->nom = NULL; if( nom ) { g->nom = strdup( nom ); } g->largeur = largeur; g->hauteur = hauteur; int taille = sizeof(Case_t*)*largeur*hauteur; g->grille = (Case_t**)malloc(taille); if( g->grille == NULL) { perror("Grille_Create: malloc grille"); return NULL; } memset( g->grille, 0, taille); return g; }
Exemple:
Quelqu'un pourrait il m'éclairer ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Grille_t *g = Grille_Create(.......................); g->grille[0][0]->type = VIDE; ....
Merci.
Partager