fuite de mémoire! - C++ - Programmation
Marsh Posté le 16-08-2005 à 20:47:35
# for(i=0;i<2048;i++)
# {
# for(j=0;j<2048;j++)
# {
# fread(&tex_ciel[(i*2048+j)*4+2],sizeof(GLubyte),1,fich);
# fread(&tex_ciel[(i*2048+j)*4+1],sizeof(GLubyte),1,fich);
# fread(&tex_ciel[(i*2048+j)*4+0],sizeof(GLubyte),1,fich);
# tex_ciel[(i*2048+j)*4+3]=255;
# }
# }
c'est idiot tout ça, tu veux faire tout en un seul fread. idem pour le reste. beurk les variables globales aussi grosse. avec des BMP, tu peux meme faire du mappage mémoire directe
Marsh Posté le 16-08-2005 à 20:49:19
GLubyte en_tete[37];
...
fread (en_tete,1,54,fich);
perdu
Marsh Posté le 16-08-2005 à 20:50:55
Je ne sais pas si les lignes suivantes sont la cause du problème, mais en tous cas, il y a là un petit bug.
GLubyte en_tete[37]; |
Il faudrait que "en_tete" soit déclaré avec au moins 54 octets, sinon il y a un débordement sur les zones mémoires voisines.
Edit : T'es trop rapide, Taz !
Marsh Posté le 17-08-2005 à 12:13:08
Sinon une fois que tu as instancié tes textures, ça sert a rien de garder une copie des images. Donc tu peux abandonner tes gros tableaux globaux, utiliser un tableau dynamique assez grand (pour réutiliser le meme pour toutes les faces) au moment du loading et le virer proprement à la fin du Init.
Marsh Posté le 17-08-2005 à 13:47:45
Ok je croyais que openGl se servait de mes tableaux pour les textures par la suite.
Pour le fread 54 dans un tableau de 37 c'est une petite erreur c'est 0x37 dsl. (j'ai compté l'en-tete dans mon éditeur hexa et forcément j'ai l'offset en hexa...
Tout s'arrange merci. En fait je ne savais pas qu'OpenGl chargait mes textures en mem et du coup je me souçiais pas des textures. Erreur fatale, il manquait:
glDeleteTextures(6,textures_skybox);
d'où la fuite de memoire.
Merci bien!!!
Marsh Posté le 16-08-2005 à 20:05:34
Salut!
Je programme un jeu de combat avec OpenGl et Glut et lorsque j'appelle cette fonction, le gestionnaire des taches de windows m'indique que la mémoire utilisée par mon processus grimpe en flèche (je passe environ de 50 Mo à 120 Mo):
Pourtant je n'ai aucune allocation dynamique puisque mes tableaux ont des tailles fixes et sont déclarés variables globales dans le .cpp principal
merci
---------------
deluser --remove-home ptitchep