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.
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;
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
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;
}
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.

Exemple:
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;
....
Quelqu'un pourrait il m'éclairer ?

Merci.