comment savoir d'ou vient les fuites memoires
comment savoir d'ou vient les fuites memoires
Tu utilises MFC ?
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
salut,
si tu as les macros suivante en debut de source:
la fuite memoire sera signalée en debug dans l'onglet debug.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif
avec en prime la ligne de la fuite accessible par double clic.
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
Excellent !
Ca marche sur toutes les versions de Visual ?
je deja ces lignes mais je peux pas double cliquer sur toutes
ça fonctionne depuis visual 4.x jusqu'a visual .net 200x
.
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
si tu as les lignes et que tu n'as pas l'info complete c'est que la fuite est dans un source qui n'a pas ces macros.
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
J'imagine qu'il faut faire gaffe aussi à ce que l'effacement des données allouées avec ces new soit fait dans un source avec ces macros ?
je ne pense pas, le define ne redefinit que le new.Envoyé par Miles
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
On verra bien comment il s'en sort alors, mais c'est étonnant, la plupart des bibliothèques qui font ça doivent réécrire et new et delete.
Vive les pointeurs intelligents![]()
Vive les bons programmeurs![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
[FLOOD on]
VIVE MOI !
[FLOOD off]
mais comment il fait pour repérer les fuites ?
Au passage: Si tu as par malheur des malloc() dans ton programme (ce que tu ne devrais pas avoir puisque c'est un programme C++), rajoute cette définition dans les options du préprocesseur:
Cela te permettra d'avoir nom de fichier et numéro de ligne pour les malloc comme pour les new.
Code : Sélectionner tout - Visualiser dans une fenêtre à part _CRTDBG_MAP_ALLOC
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
je n'est pas de malloc dans mon programme
parcontre j'ai une map dans une de mes classe que je remplis dans le constructeur comme ceci
faut il que je les efface dans mon destructeur ? si oui comment car la je sais pas car l'utilisation des map m'étais jusque la inconnu mais ma été imposé donc j'ai pris ce que j'ai pu sur le net.
Code : Sélectionner tout - Visualiser dans une fenêtre à part s_maMap["OK"] = pOK;
Non, ta map est détruite à la destructution de l'objet.
Par contre, si la map contient des pointeurs, les objets pointés ne sont pas détruits, me semble-t-il...
C'est pour cela que les conteneurs de la STL travaillent généralement par valeur...
Au fait, au sujet du debug de MFC: le define ne redéfinit que le new, mais c'est pour ajouter des paramètres (c'est un nouvel operator new qui est appelé)
L'operator delete est réécrit aussi, mais il garde la même signature que le delete original, donc pas besoin de define.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Partager