J'utilise Visual Studio 2008, Développement d'une fenêtre OpenGL. J'ai créé plusieurs classes pour créer un squelette, un pour les articulations, un pour la peau, un pour un corps (qui est un support pour plusieurs articulations et peau) et un pour lire un fichier skel/skin.Fuite de mémoire C++, Impossible de trouver où
Dans chacune de mes classes, j'utilise des pointeurs pour la plupart de mes données, dont la plupart sont déclarées en utilisant = new int [XX]. J'ai un destructeur pour chaque classe qui supprime les pointeurs, en utilisant delete [XX].
Dans ma fonction d'affichage GLUT, je l'ai déclaré un corps, ouvrir les fichiers et les dessiner, puis supprimer le corps à la fin de l'affichage. Mais il y a toujours une fuite de mémoire quelque part dans le programme. À mesure que le temps passe, l'utilisation de la mémoire continue d'augmenter, à un rythme constant, que j'interprète comme quelque chose qui n'est pas supprimé.
Je ne sais pas si c'est quelque chose dans la fonction d'affichage glut qui ne supprime pas la classe Body, ou quelque chose d'autre. J'ai suivi les étapes pour la détection de fuite de mémoire dans Visual Studio 2008 et il ne signale aucune fuite, mais je ne suis pas sûr à 100% si cela fonctionne bien pour moi. Je ne parle pas couramment le C++, donc il y a peut-être quelque chose que je néglige, quelqu'un peut-il le voir?
De principale:
void display(void){
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
Body *body = new Body();
body->readSkel("C:\\skel2.skel");
body->drawBody();
body = new Body();
body->readSkel("C:\\skel1.skel");
body->drawBody();
glutSwapBuffers();
body->~Body();
delete body;
}
De corps:
Body::Body(){
skelFile = string();
skinFile = string();
totalJoints = 0;
joints = new Joint[25];
skin = new Skin;
}
Body::~Body(){
delete[25] joints;
delete skin;
}
S'il vous plaît arrêtez de coder et lisez Effective C++ 3e édition de Scott Meyers Je ne veux pas être sarcastique, mais je suis tenté de créer une réponse longue juste adresser certains de vos erreurs de codage et mauvaises pratiques.Le livre de Scott Meyers vous mettra sur la bonne voie pour mieux coder. Ular article 4 et 14. –
Will do. Désolé, ça fait longtemps que je n'ai pas fait de C++, notre école n'enseigne désormais que Java (sucks, non?) Et le professeur nous oblige à utiliser C/C++ sans nous montrer quoi que ce soit d'abord. I <3 Académie. – Nicholas