franchouze
Messages postés7Date d'inscriptionvendredi 8 août 2003StatutMembreDernière intervention12 octobre 2006
-
5 juin 2006 à 14:00
franchouze
Messages postés7Date d'inscriptionvendredi 8 août 2003StatutMembreDernière intervention12 octobre 2006
-
5 juin 2006 à 16:43
Bonjour,
Pour vérifier les fuites mémoires de mon programme j'utilise valgrind.
Voici "l'oubli" de libération détecté par valgrind (ligne avant la stl en gras) :
Dans ma fonction Quadri, avant appel aux fonctions de la stl, voici la ligne de code fautive :
Hauteur_Hough.push_back( xxx );
où Hauteur_Hough est un vecteur de double et xx est un double.
Je ne comprend pas l'erreur, car normalement, en utilisant les
fonctions push_back etc... je ne devrais pas avoir à me soucier des
allocations. Dans mon programme j'ai d'autres fuites du meme type
lorsque je fais un push_back d'instance d'objet. Je pensais donc que ca
venait de ma façon de construire/détruire mon objet. Mais la, ca me le
fait pour des doubles alors je comprends plus....
Est ce que quelqu un aurait une piste à me fournir pour résoudre mon problème ?
franchouze
Messages postés7Date d'inscriptionvendredi 8 août 2003StatutMembreDernière intervention12 octobre 2006 5 juin 2006 à 16:43
Bien deviné !!
Je viens de regarder sur le site de valgrind et il est précisé dans les
FAQ que valgrind sort des erreurs du type "XXbytes in YY blocks are
still reachable" car la mémoire n'est pas libérée assez tot.
Pour ce que ca interesse, pour eviter ces messages et libérer la
mémoire plus tot, il faut utiliser l'option de compilation
GLIBCXX_FORCE_NEW
mais il est précisé que ca ralenti les programmes.