Bonjour,

J'ai une erreur 'Segmentation fault" qui apparaît quand j'accède à nPixel[1596][0]. nPixel est de type t_pixel:
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'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
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;
    }
J'accède à nPixel comme ceci:
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];
Ca plante pour Yd = 1596 et Xd = 0 à la ligne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
nPixel[Yd][Xd].bleu = 0;
Le programme donne des valeurs à nPixel[Yd][Xd] sans problèmes pour Yd = 0 à 1595.

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.