Bonjour, j'ai un probleme sur la fonction realloc.

J'ai un tableau de char dynamique à deux dimensions :

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
char **creer_grille(int col,int lignes) {
 
   int i,j;
 
   char **p4=malloc(lignes*sizeof(*p4));
   if(p4==NULL) { printf("L'allocation n'a pas march\n"); exit(EXIT_FAILURE); }
 
   for(i=0;i<lignes;i++) {
      p4[i]=malloc(col*sizeof(p4[i]));
      if(p4[i]==NULL) { printf("L'allocation n'a pas march\n"); exit(EXIT_FAILURE); } }
 
     for(i=0;i<lignes;i++)
      for(j=0;j<col;j++) 
         p4[i][j]=' '; 
 
return p4; }
J'ai une fonction 'placerpion' qui lorsque la colonne choisie par l'utilisateur est remplie, on ajoute 10 lignes au tableau (via la fonction realloc).

Mais ça me fait toujours un segmentation fault lors de l'execution, et je ne vois pas trop d'où vient le 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
15
16
17
18
19
20
21
22
23
 void placerpion(char **p4,int colonnes,int lignes,char *joueuractuel) {
 
    int choixcol,i,j;
 
    if(*joueuractuel=='X' || *joueuractuel=='O') {
 
       printf("Choisissez la colonnes o vous voulez placer votre pion : ");
       scanf("%d",&choixcol);
 
       if(p4[(lignes-1)][choixcol] != ' ') {   /* Si colonne remplie, alors allouer 10 lignes de + */
          realloc(p4,(lignes+=10)*sizeof(p4));
          for(i=(lignes-10);i<lignes;i++)
             p4[i]=malloc(colonnes*sizeof(p4)); 
 
       for(i=(lignes-10);i<lignes;i++) {       /* on remplit les nouvelles lignes de ' ' */
          for(j=0;j<colonnes;j++) 
             p4[i][j]=' '; } }
 
 
       for(i=0;i<lignes;i++)  /* Placer le pion du joueur à la case voulue */
          if(p4[i][choixcol] == ' ') { 
             p4[i][choixcol]=*joueuractuel; 
             break; } } }
Merci d'avance