Arto_8000
Messages postés1044Date d'inscriptionlundi 7 mars 2005StatutMembreDernière intervention13 juillet 2010
-
29 nov. 2006 à 02:09
Arto_8000
Messages postés1044Date d'inscriptionlundi 7 mars 2005StatutMembreDernière intervention13 juillet 2010
-
29 nov. 2006 à 23:33
Présentement je suis entrain de dévelloper un mini jeux de plateforme du genre Mario avec SDL. Le jeux fonction très bien sauf que j'ai remarquer qu'il ralentit énormement à près un certain temps et cela vient du fait qu'il utilise de façon démesuré et croissant l'espace mémoire. J'ai réussit à ralentir la prise de mémoire de mon jeux avec les macros ifndef, mais malgré tout le problème persiste.
platon179
Messages postés237Date d'inscriptionlundi 20 mai 2002StatutMembreDernière intervention22 juillet 20112 29 nov. 2006 à 09:10
Salut!
Si ta mémoire augmente tout le temps, c'est que tu as une fuite quelque
part. J'ai pas le temps de regarder ton code en détail, mais voici
quelques pistes :
Tu es sûr de libérer toute la mémoire utilisée? A chaque fois (ou
presque) que tu fais un malloc(), il doit y avoir un free() associé...
De même, dans ta fonction drawRect(), tu fais un
SDL_CreateRGBSurface(), alors qu'il n'y a pas de SDL_FreeSurface()...
Et je suppose que tu appelles cette fonction relativement souvent
(genre, a chaque frame)... Pas étonnant à partir de là que ta mémoire
augmente...
Il faut que tu vérifies ce genre de choses... De même, tout à la
fin de ton main(), tu dois faire un SDL_FreeSurface(ecran);
yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 20092 29 nov. 2006 à 10:00
Salut Arto_8000,
effectivement ça sent la fuite à plein nez ! (pas de gaz )
Ce qu'a dit planton va certainement résoudre ton problème, mais j'en profite pour ajouter autre chose.
Il y aussi un delete qui doit être associé à chaque new !!!
PS: désolé pour la blague foireuse
YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
Arto_8000
Messages postés1044Date d'inscriptionlundi 7 mars 2005StatutMembreDernière intervention13 juillet 20107 29 nov. 2006 à 23:33
Merci de m'avoir aider cette fuite de gaz ... heu de mémoire, c'était effectivement à cause qu'il manquait les SDL_FreeSurface pour la totalité des fonctions qui créaient des surfaces.