Bonjour à tous,
Voilà, cette fois j'ai bien repéré ma fuite de mémoire :
font est définit comme étant un SDL_Surface *;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 if(!(font=TTF_RenderText_Solid(fontTTF,s.c_str(),color))) { //handle error here, perhaps print TTF_GetError at least } else { int h, w; TTF_SizeText(fontTTF,s.c_str(),&w,&h); graphique->blit(font,dest,0,0,x,y,w,h); }
fontTTF est bien initialisée et de type TTF_Font *
color idem mais de type SDL_Color
Ma question est : où se trouve ma fuite ?
J'ai tenté de faire un delete font ne sachant pas si TTF_RenderText_Solid créait automatiquement un nouvel objet. Mais sans bon résultat.
Voici mes test et leurs résultats :
en mettant en commentaire les trois lignes suivant else, rien ne change. Je suppose donc, que tout est dû à la condition :
j'ai rajouté cette ligne avant toutes les autres:
Code : Sélectionner tout - Visualiser dans une fenêtre à part if(!(font=TTF_RenderText_Solid(fontTTF,s.c_str(),color)))
et je vois bien une augmentation des pertes. Je peux donc en conclure que la majorité des pertes proviendrait de là.
Code : Sélectionner tout - Visualiser dans une fenêtre à part font=TTF_RenderText_Solid(fontTTF,s.c_str(),color);
Alors je me suis demandé sur s.str(), il renvoit un pointeur sur un objet... qui ne serait pas détruit pas après, serait-ce la source de fuite? apparement non, mais j'ai l'impression qu'il y a une légère modification quand meme.
Pourriez vous m'aider ? par exemple, est ce que la fonction TTF_RenderText_Solid de la librairie TTF pour SDL est propre (qu'elle détruit bien ce qu'elle crée sauf ce qu'elle renvoie)?
Partager