Bonjour,

Je programme avec Visual Studio Express 2005.

J'ai installé Visual Leak Detector, un detecteur de fuite de mémoire... efficace !

Du coup j'ai pu corriger quelques fuites, mais une derniere me laisse perplexe.

J'ai une classe cListe qui peut contenir des elements.

On ajoute un élément avec :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
int m_valeur;
std::string m_texte;
 
void ajouterElement(int valeur, std::string texte)
{
    m_valeur = valeur;
    m_texte = texte;
}
Et j'ai une fuite sur certains éléments créés, indiquée sur la ligne

m_texte = texte;

J'ai donc pensé que je ne libérais pas la mémoire de certaines string... pour vérifier, j'ai codé en dur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
pListe->ajouterElement(0, "test 1");
pListe->ajouterElement(0, "test 2");
pListe->ajouterElement(0, "test 33333333333333333333");
pListe->ajouterElement(0, "test 4");
pListe->ajouterElement(0, "test 5");
Et là, j'ai une fuite de mémoire systématique dans l'éxecution de :

pListe->ajouterElement(0, "test 33333333333333333333");

Comme si la longueur de la chaine posait probleme....

Je m'y prend mal avec les std::string ?

Merci !