Prd de fuite mémoire.

Signaler
Messages postés
13
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
9 juillet 2004
-
Messages postés
13
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
9 juillet 2004
-
Salut à tous, dans mon programme je dois utiliser beaucoup de matrice et donc pas mal d'allocation dynamique. Je desalloue regulièrement mes tableaux(destructeurs et desallocation), pourtant j ai une légère occupâtion de l espace mémoire en plus. Mon problème est que ce programme doit tourner pendant plusieurs heures sur un grand jeu de données, et ma mémoire sature. j ai utilisé la méthode _CtrDumpMemoryleaks(); pour voir d où provenait la fuite mais j arrive pas a determiner précisement l 'erreur ( la fuite viens la plupart du temps lors de l allocation). Donc je voudrais savoir si qq 1 connait une méthode pour déterminer de facon précise le lieu de la fuite mémoire ... Si qq 1 à une idée, merci d avance...

2 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
http://www.cppfrance.com/code.aspx?ID=18085

je ne me souvient pas si ca donne la ligne ou a été faire l'allocation, mais en remplacant new par quelque chose comme new(_NORMAL_BLOCK, __FILE__, __LINE__) tu devrais y arriver
Messages postés
13
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
9 juillet 2004

Je te remercie vecchio56 ,mais ta fonction donne la meme info que le _CtrDumpMemoryleaks(); , j obtiens le lieu de l'erreur: ex :
matrice.cpp(343) : {17077} normal block at 0x004721F0, 4 bytes long.
qui correspond à
Resultat->Mat=(float **) malloc((L1)*sizeof(float *));
for(i=0;i<L1;i++)
Resultat->Mat[i]=(float*) malloc(C2*sizeof(float));
(new ou malloc, ca change pas).
Mais j obtiens toutes les fuites d'un coup, meme en avancant au pas a pas, elles arrivent toutes à la fin d'une boucle (300 lignes de fuites). Et je vois pas où j aurais pu oublier de desallouer! Donc je voulais avoir un truc qui me donne l erreur au "pas a pas" afin de pouvoir cibler l erreur, mais là, les erreurs arrivent toutes à la fin d'une opération qui en appelle bcp d'autre et j ai aucune perte tant que je suis pas sorti de la boucle. Donc je cherche mais ..... En tout cas merci, mais j ai le meme resultat avec l autre méthode.