Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fuite de mémoire

    11 avril 2006 à 19:00:13

    Salut!
    Eh si, encore un problème de fuite de mémoire avec SDL lol.
    Donc ma fonction créé un dégradé. J'ai fait un malloc pour avoir le nombre de surfaces a créer pour le dégradé.
    Donc forcément des SDL_FreeSurface (dans un for) et un free.
    Mais toujours des fuites :(
    Allez un p'tit bout de code que j'ai isolé:

    for(i=0; i<=h/2; i++) {
        degrade[i] = SDL_CreateRGBSurface(SDL_HWSURFACE, textSurface->w+20, 1, 32, 0, 0, 0, 0);
        SDL_FillRect(degrade[i], NULL, SDL_MapRGB(screen->format, colorButton.r, colorButton.g, colorButton.b));
        SDL_SetAlpha(degrade[i], SDL_SRCALPHA, 255-(i*20));

        if(h-i == i)
            break;
        else {
            degrade[h-i] = SDL_CreateRGBSurface(SDL_HWSURFACE, textSurface->w+20, 1, 32, 0, 0, 0, 0);
            SDL_FillRect(degrade[h-i], NULL, SDL_MapRGB(screen->format, colorButton.r, colorButton.g, colorButton.b));
            SDL_SetAlpha(degrade[h-i], SDL_SRCALPHA, 255-(i*20));
        }
    }

    et
    plus loin:

    for(i=0; i<h/2; i++) {
        SDL_FreeSurface(degrade[i]);
        if(h-i == i)
            break;
        else {
            SDL_FreeSurface(degrade[h-i]);
        }
    }
    SDL_FreeSurface(textSurface);
    SDL_FreeSurface(fond);

    TTF_CloseFont(font);
    TTF_Quit();
    free(degrade);


    En fait c'est tout con ca créé un dégradé vers la couleur d'arrière plan avec la transparence.
    Quand je vire le premier bout de code, plus de fuites. Donc ca doit venir de la...
    :euh:
    Merci a ceux qui pourront m'aider :D
    • Partager sur Facebook
    • Partager sur Twitter
      11 avril 2006 à 19:05:46


      for(i=0; i<h/2; i++) {
          SDL_FreeSurface(degrade[i]);
          if(h-i == i)
              break;
          else {
              SDL_FreeSurface(degrade[h-i]);
          }
      }
      ->

      for(i=0; i<=h; i++)
          SDL_FreeSurface(degrade[i]);


      Par ailleurs, tu pourrais montrer le malloc et le reste de la fonction ?
      • Partager sur Facebook
      • Partager sur Twitter
        11 avril 2006 à 19:09:13

        En effet c'est pareil et moins compliqué, et c'est ce que j'avais mis au début. Je me suis dit qu'il valait mieux supprimer les surfaces comme on les a créées. Mais en fin de compte c'est pareil.
        Enfin bon, toujours des fuites.
        Mon ordi porte pas Nana.
        • Partager sur Facebook
        • Partager sur Twitter
          11 avril 2006 à 20:03:30

          Citation : Arkhiall

          Enfin bon, toujours des fuites.
          Mon ordi porte pas Nana.


          C'est chic...
          • Partager sur Facebook
          • Partager sur Twitter
          Music only !
            11 avril 2006 à 20:08:53

            C'était poir détendre l'atmosphère ^^
            En général tu trouves toujours comment résoudre les problèmes des autres, et la tu me vannes. :(
            La je suis triste la :'(

            EDIT: Ok c'est bon j'ai résolu mon prob grace au post "tableau de SDL_Surface".


            for(i=0; i<=h/2; i++) {
                coord.y = y+i;
                SDL_FreeSurface(degrade);
                degrade = SDL_CreateRGBSurface(SDL_HWSURFACE, textSurface->w+20, 1, 32, 0, 0, 0, 0);
                SDL_FillRect(degrade, NULL, SDL_MapRGB(screen->format, colorButton.r, colorButton.g, colorButton.b));
                SDL_SetAlpha(degrade, SDL_SRCALPHA, 255-(i*20));
                SDL_BlitSurface(degrade, NULL, screen, &coord);
                coord.y = y+h-i;
                SDL_BlitSurface(degrade, NULL, screen, &coord);
            }


            Carrément plus simple!
            • Partager sur Facebook
            • Partager sur Twitter

            Fuite de 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