Bonjour,
J'ai une erreur 'Segmentation fault" qui apparaît quand j'accède à nPixel[1596][0]. nPixel est de type t_pixel:
J'alloue de la mémoire à nPixel de la manière suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 typedef struct { unsigned char rouge; unsigned char vert; unsigned char bleu; } t_pixel;
J'accède à nPixel comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 nPixel = malloc(nHauteur*sizeof(t_pixel)); //nHauteur = 2120 if(nPixel==NULL) return -1; for(i=0;i<nHauteur;i++) { nPixel[i] = malloc(nLargeur*sizeof(t_pixel)); //nLargeur = 1978 if(nPixel[i]==NULL) return -1; }
Ca plante pour Yd = 1596 et Xd = 0 à la ligne:
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 for(Yd=0;Yd<nHauteur;Yd++) { for(Xd=0;Xd<nLargeur;Xd++) { Xo = (Xd-Xa)*cos(angle)+(Yd-Ya)*sin(angle)+Xa; Yo = -(Xd-Xa)*sin(angle)+(Yd-Ya)*cos(angle)+Ya; /*hauteur = 1276 largeur = 1754*/ if(Xo<0||Xo>=largeur||Yo<0||Yo>=hauteur) { nPixel[Yd][Xd].bleu = 0; //Ca plante ici avec "Segmentation fault" pour Yd = 1596 nPixel[Yd][Xd].vert = 0; nPixel[Yd][Xd].rouge = 0; } else nPixel[Yd][Xd] = image->Pixel[Yo][Xo];
Le programme donne des valeurs à nPixel[Yd][Xd] sans problèmes pour Yd = 0 à 1595.
Code : Sélectionner tout - Visualiser dans une fenêtre à part nPixel[Yd][Xd].bleu = 0;
Je ne comprends pas qu'il y ait cette erreur étant donné que l'allocation a marché (il n'y a pas eu de sortie de la fonction due au test du retour de malloc). Donc j'ai bien un bloc de [2120]x[1978] pour nPixel. Et il me fait une segmentation fault à 1596 alors que j'ai ce qu'il faut jusqu'a 2120-1.
Je vous remercie d'avance si quelqu'un peut m'aider à trouver le problème.
Partager