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;

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);
	}
    }
Ce qui compile et fonctionne bien pour 1 seul ascenseur. Je peux accéder à usersasc[0][i < iCapacite] sans probleme.
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