[ C ] fuite de mémoire SDL / TTF

Résolu/Fermé
oneshoot Messages postés 1 Date d'inscription mercredi 29 août 2007 Statut Membre Dernière intervention 23 août 2011 - 23 août 2011 à 13:43
 nino - 31 août 2011 à 21:57
Bonjour,

J'ai rencontré un petit problème qui en fait s'avère être très embarrassant en essayant d'écrire avec la librairie TTF, mon programme doit simplement écrire les numéro dans l'ordre une fois en noir une fois en blanc, pour ceci j'utilise une boucle qui s'incrémente, dans laquelle je remplis une chaîne de caractère avec ce numéro avant de l'afficher, voici le morceau de code posant problème, le problème se situe sur le sprintf, merci de votre aide...

Les déclarations :

 SDL_Surface *texte = NULL;
             char phrase[50];


et le code problème

for(i=1;i<25;i++)
        {
            sprintf(phrase, "numero : %d", i);
            if(i==1||i==3||i==5||i==7||i==9||i==11||i==13||i==15||i==17||i==19||i==21||i==23||i==25||i==27||i==29||i==31||i==33||i==35||i==37||i==39||i==41||i==43||i==45||i==47||i==49)
            {
                texte = TTF_RenderText_Blended(police, phrase, blanc);
            }
            else
            {
                texte = TTF_RenderText_Blended(police, phrase, noir);
            }
            SDL_BlitSurface(texte, NULL, ecran, &positionpolice);
            positionpolice.y = positionpolice.y+26;
        }


Tout le code en gras est dans un grand while qui continue tant que je ne sort pas de cette fonction.

Je vous l'accorde le code est bourrin, il faut que je l'améliore mais le problème ne vient je pense pas de la.

Ps : les initialisations sont faites comme il faut, et les libérations mémoire et TTF_CloseFont(police);
TTF_Quit(); sont bien effectué a la fin du code aprés la boucle du while
A voir également:

1 réponse

résolu, il faut mettre un free surface texte avant

SDL_FreeSurface(texte);
texte = TTF_RenderText_Blended(police, phrase, noir);

V
2