Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur de segmentation à l'execution

Sujet résolu
    18 août 2007 à 18:13:10

    Salut à tous! Je suis en train de faire un programme en C++ et SDL et là je suis confronté à une erreur de segmentation bizzare :

    Citation : Debugger

    #0 0x10026180 SDL_LowerBlit (??:??)



    Cette erreur semble venir de cette ligne :

    1. appliquer_surface(m_position.x - camera->getX(), m_position.y - camera->getY(), m_sprite, ecran, &m_clip[m_sens][m_stance][m_frame]);


    Mais je ne sais aps du tout comment la résoudre :(
    • Partager sur Facebook
    • Partager sur Twitter
      18 août 2007 à 18:45:44

      Est-ce que tu es sûr que tes pointeurs point sur quelquechose ?
      • Partager sur Facebook
      • Partager sur Twitter
      Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
        18 août 2007 à 18:50:06

        Lorsque j'enleve les "camera->..." ça me fait la même erreur, j'ai un test de validité pour le m_sprite qui n'affiche aucune erreur, lorsque j'enleve "&m_clip[m_sens][m_stance][m_frame]" (qui vaut NULL par défaut), ça me fait quand même l'erreur, et ecran à un test de validité lui aussi.
        • Partager sur Facebook
        • Partager sur Twitter
          18 août 2007 à 18:50:51

          Et quel fait la fonction "appliquer_surface"
          • Partager sur Facebook
          • Partager sur Twitter
          Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
            18 août 2007 à 18:55:05

            1. void appliquer_surface( int x, int y, SDL_Surface* sprite, SDL_Surface* ecran, SDL_Rect* partie)
            2. {
            3.     SDL_Rect posBlit;
            4.     posBlit.x = x;
            5.     posBlit.y = y;
            6.     //On blitte la surface
            7.     SDL_BlitSurface(sprite, partie, ecran, &posBlit);
            8. }
            • Partager sur Facebook
            • Partager sur Twitter
              18 août 2007 à 18:58:36

              est-ce que tu es sûr de tes valeurs de x et y ?
              • Partager sur Facebook
              • Partager sur Twitter
              Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
                18 août 2007 à 19:02:54

                Oui, car si j'enleve cette ligne, je peux intéragir avec l'objet à afficher, même si je ne le vois pas.
                • Partager sur Facebook
                • Partager sur Twitter
                  18 août 2007 à 19:12:21

                  Essaye d'utiliser un débuggeur pour vérifier l'état des pointeurs.

                  Est-ce que tu as bien initialiser la SDL ?
                  Est-ce que tu as bien initialiser la surface ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
                    18 août 2007 à 19:16:14

                    Et avec quel debugger je peux faire ça? Car celui de code blocks n'as aps l'air d'avoir cette fonctionnalité.

                    Sinon oui, SDL est bien initialisé, car le reste du jeu s'affiche parfaitement, et j'ai fait un test de validité qui renvoie que c'ets valide.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      18 août 2007 à 19:17:44

                      Il l'a forcément sinon ça ne servirait à rien. Autrement il y a GDB, il est plus puissant.

                      Essaye autrement de tout recompiler.
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
                        18 août 2007 à 20:24:07

                        Ben je vois aucune option dans le debugger de code blocks pour vérifier la validité des pointeurs.

                        Sinon, j'ai téléchargé GDB, mais j'ai pas trop compris comment l'utiliser ^^"
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Erreur de segmentation à l'execution

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown