petit probleme: Erreur de segmentation.
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:
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:
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:
1 2 3 4 5
|
Grille_t *g = Grille_Create(.......................);
g->grille[0][0]->type = VIDE;
.... |
Quelqu'un pourrait il m'éclairer ?
Merci.