Bonjour,
mon but est d'avoir un tableau à deux dimensions de structures.
donc usersasc[1][2] accède à la 2e structure de l'ascenseur 1.
J'ai iNbasc threads qui représentent chacun un ascenseur. Chaque thread accède à ce tableau (sans conflits rassurez-vous). Je réserve donc la mémoire comme ceci :
SUser** usersasc;
Ce qui compile et fonctionne bien pour 1 seul ascenseur. Je peux accéder à usersasc[0][i < iCapacite] sans probleme.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 if((usersasc = (SUser**)malloc(iNbasc*sizeof(SUser*))) == NULL) { perror ("Erreur dans la fonction main : Erreur d'allocation memoire infoasc"); exit(EXIT_FAILURE); } for(i = 0; i<iCapacite; i++) { if((usersasc[i] = (SUser*)malloc(iCapacite*sizeof(SUser))) == NULL) { perror ("Erreur ds la fonction main : allocation memoire usersasc"); exit(EXIT_FAILURE); } }
Si je lance le programme pour + que 1 ascenseur avec capacite = 1 et si j'essaie d'accéder à usersasc[1][i < iCapacite](ce qui arrive souvent ds le prog), le programme se fige (même pas de seg fault).
Voyez-vous une erreur dans mon malloc ? La faute vient de là j'ai fini par la localiser mais je ne vois pas ce qui cloche.
Merci![]()
Partager