Partage
  • Partager sur Facebook
  • Partager sur Twitter

Sokoban

ca plante toujours au même endroit...

    23 mai 2006 à 18:38:42

    Bonjour à toutes et à tous,
    Mon sokoban plante toujours et j'ai donc bidouiller avec des printf pour voir à quel niveau cela se passait

      printf("etape 12");
      for(i=0;i<4;i++)
      {
        printf("etape 13");
        SDL_FreeSurface(dudu[i]);
      }
      printf("etape 14");

    Les étapes 12 et 13 s'affiche bien (l'étape 13 s'affiche bien 4 fois vu qu'il est dans la boucle ^^ )....mais l'étape 14 n'est pas franchit...j'ai toujours une erreur de "parachute deployed" donc je me suis dit que cela pouvait provenir de mon dudu[i] mais j'ai regarder le code de M@teo et c'est identique (à part le nom qui change) :euh: ...
    Si quelqu'un pourrai m'éclairer un peu ou peut être me dire où je dois regarder car là je vois vrément pas..
    D'avance merci

    @+
    • Partager sur Facebook
    • Partager sur Twitter
      24 mai 2006 à 6:46:01

      quel est ta declaration de dudu[]... elle doit etre SDL_Surface dudu[4] et non pas dudu[3] comme un peu le croire... le fait est que a la declaration tu donne le nombre d'element que tu veut (donc 4) et a l'utilisation tu utilise tes 4 element qui sont compte a partir de 0(donc 0,1,2,3)
      • Partager sur Facebook
      • Partager sur Twitter
        24 mai 2006 à 13:45:00

        oui c'est bien 4

        SDL_Surface *dudu[4]={NULL};


        Mais l'étoile est bien obligatoire, non? :euh:
        • Partager sur Facebook
        • Partager sur Twitter
          25 mai 2006 à 1:09:52

          oui, c'est un tableau de pointeur donc tu doit avoir cette etoile,

          est tu certein que tu n'as pas deja fais un free avant ou bien que tu avais bien charger les 4 image. tu peu verifier en fesant un
          for(i=0;i<4;i++)
            {
              if(dudu[i])
                  SDL_FreeSurface(dudu[i]);
            }


          de cette maniere tu iras pas free une surface qui n'existe pas, et je te conseillerai de remetre ton pointeur a NULL quand tu free une surface ailleur qua la toute fin de ton programme (sa n'a plus d'utilite a la fin du programme mais tu peu le faire aussi) de cette maniere tu est certein que quand tu free une surface elle contien quelque chose, en effet la SDL ne verifie pas cela elle meme et sa peu aporte des probleme si tu veut ffaire un free sur un surface qui n'existe pas (acces a un emplacement memoir non autoriser)

          • Partager sur Facebook
          • Partager sur Twitter

          Sokoban

          × 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