[C++]Vector STL et fuite mémoire

Fermé
Why'l - 5 août 2009 à 14:54
 Bichon - 27 août 2009 à 16:28
Bonjour,

J'ai un problème de fuite de mémoire dans l'application que je développe en C++ et je soupçonne qu'il provienne de mon utilisation des vector. En particulier, il me semble que les vector -comme tout autre objet- en variables locales sont affectés sur la pile. La mémoire correspondante est donc désallouée à la sortie de la fonction ou du bloc. Par ailleurs, pour chaque new je fais bel et bien un delete. La fuite mémoire provient de cette boucle:

for(int i=0; i<n; i++){

contr=true;
mem =new Choix(nbTable, nbSujPT);
temp=*mem;
delete mem;
mem=0;
tempB=temp.choixBin();//Objet et non pointeur, vecteur de vecteurs

for(int j=0; j<nbTable; j++){
if(coutAct>coutOpt){
coutAct=0;
ressAct=0;
contr=false;
break;
}
else{
progTabl= listTable[j].getProgTabl();//Vecteur de vecteurs
for(int k=0; k<nbTable; k++){
for(int l=0; l<listTable[j].getNbPart();l++){
if(tempB[j][k]!=progTabl[l][k]){
coutAct++;
}
if((tempB[j][k]==1)&&(progTabl[l][k]==1)){
ressAct++;
}
}
}
}
}

if((contr)&&(coutAct<coutOpt)){
res=temp;
coutOpt=coutAct;
ressOpt=ressAct;
coutAct=0;
ressAct=0;
}

}

Elle est typiquement appelée avec n=LONG_MAX et génère un accroissement de 220Ko de mémoire vive utilisée -cf. gestionnaire des tâches- par seconde. Pourriez-vous y jettez un coup d'oeil et me dire s'il vous plaît si vous y détectez une fuite mémoire manisfeste.

Merci,
A voir également:

1 réponse

Try, BoundsChecker from Microfocus.
0