begin process at 2012 05 30 01:41:52
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

problème d'allocation de classe


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

problème d'allocation de classe

mercredi 19 avril 2006 à 01:05:59 | problème d'allocation de classe

dark_naruto25

Salut les amis
Voilà un autre problème bizzard.
J'ai une classe appelé Bitmap, qui comme son nom l'indique gère une image bmp.
Bref, à côté de cette classe j'ai une fonction :
void    dessinerImage(char* image,int x,int y) {
    Bitmap    *    img = new Bitmap(image); // alloue et charge en mémoire les infos de l'image (dimensions, palette)
    initPalette(img->getPalette(),img->getNbrCouleur()); // initialise la palette (spécifique à une libraire utilisée)
    img->show(x,y); // affichage de l'image (depuis le fichier du DD)
    delete img;
}


Voilà pour les présentations. Dans un fichier, j'ai déclaré en globale :
Bitmap*   cases[9];

et dans une fonction (du même fichier), je fait :
for(i=0; i<9; i++)
   cases[i] = new Bitmap("Fichier");
<-- Prob

Et le problème c'est que quand la fonction dessinerImage(...) est appelé avant, j'ai une erreur de segmentation à la ligne Prob, et quand je mets l'appel à la fonction dessinerImage(...) en commentaire, ça fonctionne.

Donc je me remets à l'énorme potentiel de se site Web pour me trouver le problème.


mercredi 19 avril 2006 à 10:33:22 | Re : problème d'allocation de classe

luhtor

Je comprends pas tout a fait, finalement la fonction "dessiner image" elle est appelé quand ? Car a priori, ya pas d'erreur la .


mercredi 19 avril 2006 à 11:15:20 | Re : problème d'allocation de classe

dark_naruto25

et bien là où j'alloue les Bitmap (donc là où il y a le prob, c'est une fonction qui s'appel chargerImage()
et avant l'appel de cette fonction, j'appel la fonction dessinerMenu() qui appel la fonction dessinerImage().
et donc quand je met en commentaire la fonction dessinerMenu(), et bien ça marche, sinon j'obtiens une erreur de segmentation !


mercredi 19 avril 2006 à 11:23:10 | Re : problème d'allocation de classe

luhtor

Ben avec ce que tu nous mets, on peut rien dire. Post d'avantage de code. Ya une erreur mémoire quelque part, faut la trouver.


mercredi 19 avril 2006 à 11:43:29 | Re : problème d'allocation de classe

dark_naruto25

Après quelques mise en commentaire de certaines lignes, j'ai déterminer la fonction qui pourrais couiller le bordel :

void    Bitmap::show2(int x,int y) {
    BYTE        *ptr;
    BYTE        octet;
    BYTE        *ligne;
    DWORD        nbOctet,i,j;
    FILE        *fic;

    fic = fopen(name,"r");
    if( fic==NULL ) cerr<<"Erreur d'ouverture du fichier"<<endl;
    else {
        fseek(fic,header.BitmapOffset,SEEK_SET);
        ligne = new BYTE[ header.Width ];
        for(i=0; i<header.Heigth; i++) {
            ptr = ligne;
            nbOctet = (header.Width*header.Bpp)/8;
            for(j=0; j<nbOctet; j++) {
                fread(&octet,1,1,fic);
                getCouleur(octet,ptr,8/header.Bpp);
            }
            if( (header.Width*header.Bpp)%8!= 0 ) {
                nbOctet++;
                fread(&octet,1,1,fic);
                getCouleur(octet,ptr,(header.Width*header.Bpp)%8);
                ptr++;
            }
            for(j=0; j<header.Width; j++) {
                modifierCouleur( ligne[j] );
                afficherPoint(x+j,y+header.Heigth-i);
            }
            if( nbOctet%4!=0 ) {
                nbOctet = 4-(nbOctet%4);
                fseek(fic,nbOctet,SEEK_CUR);
            }
        }
        fclose(fic);
    }
}


Maintenant il ne reste plus qu'à savoir pourquoi cette fonction fait faire des erreurs de segmentation plus loin dans le code !


mercredi 19 avril 2006 à 11:47:00 | Re : problème d'allocation de classe

dark_naruto25

Peut être vais-je préciser que la fonction show2(int x,int y); marche parfaitement bien.


mercredi 19 avril 2006 à 11:54:54 | Re : problème d'allocation de classe

dark_naruto25

Réponse acceptée !
voilà du nouveau !
On m'a donc reprécisé sur #Programmation que les erreurs de segmentations sont dût à un problème de mémoire !
Quelle découvertes me direz-vous ?! lol
Bref, j'ai jeté encore un oeil (encore heureux que j'en ai 2 !) sur le code.
Je viens de voir la ligne :
ligne = new char[ ... ];

mais plus bas il n'y a pas de ligne
delete [] ligne;
Ce que donc j'ai fait ! Et miracle ça fonctionne !
Je ne pensais pas que aloué un tableau de 100 cases fesait planter autant !
Mais bon toujours est-il que ça fonctionne !
Merci quand même à toi luhtor pour avoir pris le temps de répondre.

mercredi 19 avril 2006 à 14:59:54 | Re : problème d'allocation de classe

luhtor

Mais en soi delete[] ligne ne devrait rien changer. Au pire tu as des fuites, mais ca devrait pas résoudre ton problème. Mais bon, c'est illisible comme fonction, mais ca, ca vient pas trop de toi. Toutes les manipulations de fichiers, c'est le boxon.




Cette discussion est classée dans : problème, image, classe, img, bitmap


Répondre à ce message

Sujets en rapport avec ce message

Problème d'affichage d'un image bitmap [ par MorbhAck ] Bonsoir a tous et bonne fêtes !J'ai un gros souci, je suis en train de faire un programmeet j'ai un problème vraiment vraiment bizarre.Bon le problème problème de désactivation d'un bouton [ par Pistol_Pete ] BonjourVoila mon problème:J'ai un bouton sur lequel j'ai appliqué un bmp et lorsque je veux désactiver ce bouton, au lieu de le griser, il remplace l' image enregistrer le canvas + bitmap [ par athomas ] bonjour, Je vous expose mon problème : J'ai un composant TPicture (une picture box toute simple). Je charge une image dans le bitmapEnsuite, je mets d Matrice associé à une image [ par njo80 ] J'ai un problème assez simple à comprendre mais difficille à faire.Ce n'et pas vraiment en C. Bien que cela me permettra de détecter les collisions su Problème d’accès au contrôle d’une fenêtre. [ par Superweight ] Bonjour a tous,Mon problème est le suivant: lorsque que je crée une nouvelle classe sous un projet SDI, je souhaite pourvoir contrôler les contrôles d les CGIs PHP et images x-bitmap [ par chinui ] slt tous, j'ai un debutant en programmation avec les CGIs, j'ai u fichier en .c qui génére une image x-bitmap, mais quant j'essais de l'ouvrir avec un Portée d'un objet créer [ par Nixeus ] Bonjour,Grosse question de newbie j'avoue, mais je rencontre un problème.Le logiciel que je développe, doit se voir créer un seul et unique Objet "CGe Problème instanciation de classe [ par brian85 ] Bonjour, je suis débutant, j'ai suivi quelques tutos du site du zéro qui sont très bien faits et pour aller plus loin, je me frotte aux classes, et là adapter l'image à la taille du bouton [ par ndubien ] Bonjour,Je cherche à mettre une image sur un bouton qui s'adapte automatiquement dés que la taille du bouton change.Tout d'abord cette opération est-e


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,718 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales