Segmentation fault après malloc
Bonjour,
J'ai une erreur 'Segmentation fault" qui apparaît quand j'accède à nPixel[1596][0]. nPixel est de type t_pixel:
Code:
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:
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:
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:
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.