Probleme tableau de pointeur vers des image

cs_noetom Messages postés 5 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 20 novembre 2005 - 20 nov. 2005 à 21:36
neodelphi Messages postés 442 Date d'inscription jeudi 4 avril 2002 Statut Membre Dernière intervention 11 août 2008 - 21 nov. 2005 à 06:57
Bonjour,



Je fais un programme qui travaille avec un grand nombre d'image mais j'aimerai ne garder que 4 images à la fois en mémoire.



J'ai donc une classe CImage. J'ai tout d'abord créer un tableaux de 4
pointeus vers les CImage dont j'ai besoins. J'ai le pointeur de
la premiere image dans la case 0 du tableau et ainsi de suite jusqu'a
l'indice 3. A chaque itération j'ai besoin de supprimer la permiere
image, de décaler les autre ( la deuxieme passe premiere etc...) et
d'en ajouter une à la fin du tableau.

J'utilise un tabeau de pointeurs car je ne veux pas avoir à recopier
les images pour les déplacer dans le tableaux, pour des raisons de
rapidité.



J'ai donc fait comme ceci :



CImage *image[4];



j'alloue de la memoie pour chaque élément du tableau avec new CImage et je fais



image[0]->lectureImage(nomImage0);


image[1]->lectureImage(nomImage1);


image[2]->lectureImage(nomImage2);



image[3]->lectureImage(nomImage3);



pour i=0; i<n



Je fais c que j'ai a faire avec mes 4 images





delete image[0];
image[0]=new CImage;


image[0]=image[1];
image[1]=image[2];
image[2]=image[3];



image[3]->lectureImage(nom_Nouvelle_Image);



fin pour


ça marche pour les 4 premiere itération, mais des que les 4
premieres image chargées au départ sont censé toutes avoir été
supprimée et remplacées par des nouvelles, ça plante. La mémoire
utilisé se met a monter en fleche et ça plante.



entre 2 itération il y a trois images identiques (pointeurs vers les images) dans le tableau mais décalées d'une case.



j'ai un peu de mal avec les pointeurs et je me pense que je fais
un peu n'importe quoi. J'avais aussi penser utiliser des file (fifo)
mais je sais pas trop comment ça marche.



Ma méthode peut elle marcher efficacement (modifiée bien sur )ou dois je me tourner vers une autre méthode.

Merci a tous pour votre aide.

1 réponse

neodelphi Messages postés 442 Date d'inscription jeudi 4 avril 2002 Statut Membre Dernière intervention 11 août 2008
21 nov. 2005 à 06:57
image[0]=new CImage;

image[0]=image[1]; // ici tu perd le pointeur pour lequel tu viend d'allouer de la mémoire (ligne du dessus)

image[1]=image[2];

image[2]=image[3];



J'écrirai plutôt:



image[0]=image[1];


image[1]=image[2];


image[2]=image[3];


image[3]=new CImage;

image[3]->lectureImage(...);

neodelphi
0
Rejoignez-nous