Je commence par un tableau d'entiers test[]
qui représente un ensemble d'images. Les deux premiers éléments de test[]
sont la hauteur et la largeur de la première image. Les quatre éléments (height*width)
suivants sont des valeurs de pixel. Les six suivants représentent l'image suivante et ainsi de suite.Pourquoi est-ce que j'obtiens EXC_BAD_ACCESS même si le pointeur semble être valide?
Mon objectif est d'accéder aux images à travers des objets image sans dupliquer quoi que ce soit dans le tableau test[]
. J'essaie de le faire via ImageSet::import
.
int main(){
int test[] = {2,2,1,2,3,4,
2,2,4,5,6,7,
2,2,9,8,0,9};
ImageSet set = ImageSet();
set.import(test); //ImageSet::import
return 0;
}
ImageSet::import
utilise la variable du curseur pour stocker l'index de début de l'image suivante. appelle Image::import
pour lire ces données dans un objet image. Les données pour cette image particulière doivent commencer à l'adresse &data[cursor]
.
void ImageSet::import(int data[]){
int cursor = 0;
for(int i = 0; i < NUM_SRC_IMAGES; i++){
int height = data[cursor];
int width = data[cursor+1];
source_[i].import(&data[cursor]); //this is Image::import
cursor += height * width + 2;
}
}
Dans image::import
, je reçois un mauvais accès en essayant de lire data[0]
. Selon le débogueur, data[]
points à la valeur correcte de 2, mais EXC_BAD_ACCESS
est levée quand je tente d'obtenir cette valeur via data[0]
.
void Image::import(int data[]){
height_ = data[0]; //the problem occurs right here
width_ = data[1];
matrix_ = &data[2];
}
J'apprécierais beaucoup une explication de ce que je fais mal. J'apprécierais également des suggestions pour réaliser mon objectif sans arithmétique de pointeur.
Merci!
Avez-vous essayé de le transmettre comme 'source_ [i] .import (data + cursor)'? – manman
Un programme complet s'il vous plaît. http://sscce.org –
Ajoutez deux instructions d'impression après 'for (int i = 0; i