Partage
  • Partager sur Facebook
  • Partager sur Twitter

SDL_Delay mange la mémoire !!!!!

Je ne sais plus l'utiliser !!!??

Sujet résolu
    24 août 2006 à 18:52:50

    Bonjour :) ,


    C'est encore moi :D


    J'ai une question bizare : Quand j'utilise SDL_Delay ( avec SDL_PollEvent(&event); )

    Alors la mémoire grimpe sans arrêts o_O
    Mon programme qui ne prenait que +-2000ko de mémoire en utilise 11.000ko et ça ne s'arrête pas o_O ça grimpe toujours ; vous imaginez que l'utiliateur laisse le programme allumé pendant 6 heures, il va faire saturation de mémoire :o

    Enfait je n'avais pas besoin de SDL_PollEvent(&event); avant, j'utilisais SDL_WaitEvent(&event); mais maintenant comme il y a un contrôleur de CPU et un indicateur de temps de lecture etc. j'en ai besoin :)

    Il bouffe touteee la mémoire, je ne sais pas quoi faire ! :(



    Merci :)
    • Partager sur Facebook
    • Partager sur Twitter
      24 août 2006 à 18:57:08

      Il faudrait peut-être le code :)
      • Partager sur Facebook
      • Partager sur Twitter
        24 août 2006 à 19:21:13

        Ben je vais pas tout vous donner :D car c'est MON player xD et il ya 400 lignes

        Mais voila la partie qui nous interresse :
            SDL_Surface *cpuS = NULL;
            char cpuC[35];
            float cpuUsage = 0;
                /* Usage du CPU */
                cpuUsage = FSOUND_GetCPUUsage();
                sprintf(cpuC, "FMOD CPU Usage : %f", cpuUsage);
        cpuS = TTF_RenderText_Blended(policeLissePetit, cpuC, CouleurMoyenne);

                position.x = 5;
                position.y = 108;
                SDL_BlitSurface(cpuS, NULL, ecran, &position);

               while (continuer)
                {
                 SDL_WaitEvent(&event);
                  switch(event.type)
                   {
                   ...
                   }

                cpuUsage = FSOUND_GetCPUUsage();
                sprintf(cpuC, "FMOD CPU Usage : %f", cpuUsage);
        cpuS = TTF_RenderText_Blended(policeLissePetit, cpuC, CouleurMoyenne);
               
                position.x = 5;
                position.y = 108;
                SDL_BlitSurface(cpuS, NULL, ecran, &position);

                SDL_Flip(ecran);
                }
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          24 août 2006 à 19:41:54

          Utilise SDL_Free(cpuS); apres chaque blittage car TTF_RenderText_Blended ecrit a la suite de l'adresse pointe par cpuS sans en ecraser le contenue qui etait là avant.
          • Partager sur Facebook
          • Partager sur Twitter
            24 août 2006 à 19:47:18

            Non, ton truc ne fonctionne pas ! :(

            Il dit :
            [Linker error] undefined reference to `SDL_Free'
            • Partager sur Facebook
            • Partager sur Twitter
              24 août 2006 à 20:25:29

              Il me semble que c'est SDL_FreeSurface() la fonction en fait
              • Partager sur Facebook
              • Partager sur Twitter
                24 août 2006 à 20:49:39

                Ben non, je vais pas liberer la surface avant de la recreer a chaque boucle, ça sert à rien ! :-°
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  24 août 2006 à 20:56:59

                  Si, c'est comme ça que ça marche, test et tu verras ;)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    24 août 2006 à 22:53:58

                    Citation : Hybrix


                    Si, c'est comme ça que ça marche, test et tu verras ;)



                    Et oui c'est indiqué dans le cours, TTF_RenderText_Blended alloue une surface à chaque utilisation, il faut donc faire un SDL_FreeSurface avant lorsqu'on utilise une pointeur de surface à plusieurs reprises sinon on sature la mémoire, normal.

                    Regardes l'exercice sur le compteur ;)
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      24 août 2006 à 23:02:27

                      Tu n'a pas du comprendre ma réponse, j'approuvais l'explication de Davidbrcz :D
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        25 août 2006 à 11:27:51

                        Merci Hybrix , car c'est frai je me suis planter de fonction.
                        Avait pas mater la doc.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          25 août 2006 à 16:24:54

                          Ok, c'est bon

                          J'avais oublié ça :euh::D



                          ++ Pâriss et Merci ^^
                          • Partager sur Facebook
                          • Partager sur Twitter

                          SDL_Delay mange la mémoire !!!!!

                          × 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