Accueil > Forum > > > > Détection de fuite mémoire avec Visual Studio
Détection de fuite mémoire avec Visual Studio
vendredi 9 novembre 2007 à 16:43:06 |
Détection de fuite mémoire avec Visual Studio

RV2931
|
Bonjour, J'ai vu sur ce post Fuites-Mémoires que l'on pouvait utiliser le débugger de VC pour détecter les fuites mémoires. Il suffit d'insérer en début du fichier : #define _CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h> et d'appeler la fonction _CrtDumpMemoryLeaks(); à la sortie du programme. Par cette méthode, j'obtient quelque chose du genre : Detected memory leaks! Dumping objects -> ...... c:\program files\microsoft visual studio .net 2003\vc7\include\crtdbg.h(689) : {60} normal block at 0x09714B20, 32 bytes long. Data: <H:\C++\dessin.sv> 48 3A 5C 43 2B 2B 5C 64 65 73 73 69 6E 2E 73 76 c:\program files\microsoft visual studio .net 2003\vc7\include\crtdbg.h(689) : {59} normal block at 0x09714AD0, 16 bytes long. Data: < Kq > CD CD CD CD CD CD CD CD 80 4B 71 09 00 00 00 00 c:\program files\microsoft visual studio .net 2003\vc7\include\crtdbg.h(689) : {58} normal block at 0x09712FC0, 32 bytes long. Data: <H:\C++\dessin.sv> 48 3A 5C 43 2B 2B 5C 64 65 73 73 69 6E 2E 73 76 c:\program files\microsoft visual studio .net 2003\vc7\include\crtdbg.h(689) : {57} normal block at 0x09712F48, 60 bytes long. Data: < > CD CD CD CD 00 CD CD CD CD CD CD CD CD CD CD CD D'après la MSDN (http://msdn2.microsoft.com/en-us/library/e5ewb1h3(VS.80).aspx) concernant cette méthode débugage, le numéro contenu dans les accolades {60} représente le numéro de l'allocation mémoire "The memory allocation number (inside the curly braces).", je ne vois pas trop ce que cela représente le 689 est censé représenté la ligne mais il se situe dans le fichier crtdbg.h qui semble être effectivement un appel à la fonction "new" mais je ne sais pas où cette appel se fait dans mon fichier.
Comment je peux savoir à quel endroit dans mes fichier cette appel à eu lieu ou ce qui a causé cet appel.
J'utilise pas mal de STL::string, normalement, il n'y pas besoin de les libérer ces choses là???
Si quelqu'un a l'habitude de débugger avec cet outils, peut-il m'aider et m'indiquer la méthode de recherche ?? sinon, une autre méthode, sachant que je travaille en win32 avec des classes et fonctions récursives...ce qui fait que j'ai un sacré paquet de memoryleaks 
Merci
RV
L'intelligence est la chose la mieux répartie chez l'homme, car quoi qu'il en soit pourvu, il a toujours l'impression d'en avoir assez. "Descartes"
|
|
vendredi 9 novembre 2007 à 21:03:58 |
Re : Détection de fuite mémoire avec Visual Studio

gbourgeois0019
|
Réponse acceptée !
Je ne crois pas qu'il y ait vraiment de moyen de déterminer de quelle ligne provient le leak. Par contre moi ce que j'utilise comme strategie, je n'execute qu'une partie de mon code en mettant le reste en commentaire et je vois si cette partie provoque des leaks, et je recommence pour une autre partie et ainsi de suite... Bien sur cette startegie ne convient pas toujours tout dependant de l'application mais parfois ca va quand meme bien ! ________________________________________________________________________ Hardware is what we play with until it breaks, Software is what we play with until it works ! 
|
|
samedi 10 novembre 2007 à 02:29:10 |
Re : Détection de fuite mémoire avec Visual Studio

RV2931
|
Oui, le truc c'est que j'utilise plusieurs fonctions récursives et je ne fais pas d'allocation explicite de mémoire ou bien qu'en je fais des new, je passe la référence en paramètre de retour, donc peut-être que ça vient de là, je sais pas, j'ai donc bcp de mal à voir d'où cela provient. Je fais un parseur et j'utilise bcp de STL::string temporaires, mais celles-là sont normalement détruites à chaque fin de fonction, donc j'ai du mal, en plus, j'ose pas filer mon code, il est pas propre, j'ai pas vraiment fait de test de retour pour le moment, mais ça marche quand même, sinon la récursivité planterai, mais bon, je vais essayer de trouver et/ou de rendre mon code propre et on verra ça
Merci
@+
L'intelligence est la chose la mieux répartie chez l'homme, car quoi qu'il en soit pourvu, il a toujours l'impression d'en avoir assez. "Descartes"
|
|
samedi 10 novembre 2007 à 14:55:56 |
Re : Détection de fuite mémoire avec Visual Studio

mezaya
|
Réponse acceptée !
si tu veut détecter les leaks mémoire et si tu utilise visual avec l'aoocateur par défaut rien de plus simple. En debug tu ajout dans ton code la ligne suivante : _CrtSetDbgFlag( _CRTDBG_LEAK_CHECK_DF );
CrtSetDbgFlag permet de checker le tas, la stack etc... va voir sur msdn pour plus d'info.
cela va de donner le même résultat que CrtDumpMemoryLeaks(). le nombre entre parenthèse est bien le numéro d'allocation. si ce numéro est identique sur plusieur lancement tu peut breaker au numéro d'allocation spécifier avec la fonction _CrtSetBreakAlloc( numeroAllocation );
tu n'as plus qu'a remonter la stack pour savoir qu'elle bout de code leak.
Voili,Voilou
|
|
samedi 10 novembre 2007 à 15:12:44 |
Re : Détection de fuite mémoire avec Visual Studio

RV2931
|
C'est bon,
j'ai trouvé, je faisais des liste chaînées de partout, mais j'avais oublié de gérer les destructeurs tout simplement... entre autres...
J'ai fait ça en faisant insérant des appels à _CrtDumpMemoryLeaks(); accompagné d'un breakpoint, D'abord j'éxucute le programme complet en débug et je sauvegarde le résultat, c'est à dire les memory leaks réels, définitifs dans un wordpad. Après, en mettant des appels à _CrtDumpMemoryLeaks();+ breakpoint on obtient ainsi une liste des zone mémoires allouées temporairement et définitiement,et en comparant la liste des numéros d'allocation du résultat avec celle que j'ai obtenu à la fin du programme, j'ai repéré les endroits où il y avait des allocations non libérées
voilà la méthode que j'ai utilisée, au moins, ce sera expliqué comment faire, peut-être pas très clairement, mais j'aurai essayé..
RV
L'intelligence est la chose la mieux répartie chez l'homme, car quoi qu'il en soit pourvu, il a toujours l'impression d'en avoir assez. "Descartes"
|
|
Cette discussion est classée dans : visual, cd, include, studio, crtdbg
Répondre à ce message
Sujets en rapport avec ce message
OpenGL et Glut [ par chacapouette ]
Bonjour, voilà je suis débutant dans la programmation et j'ai quelques petits soucis pour utiliser Glut (glut utilisé avec OpenGl pour pas mal de chos
Pb. COMPILATION API C de MYSQL et Visual studio 8 [ par zorro4472 ]
Bonjour,J'essai de compiler un source C avec Visual Studio 8 mais... Le compilateur n'aime pas mon code .... J'ai mis include MYSQL/mysql.h et winsock
problème de compilation de bibliothèque XMlL dans un programme C sous visual Studio. [ par boualiasma ]
Salut,- j' extrais tous les sept archives libxml2-2.7.3.win32, iconv-1.9.2.win32, zlib-1.2.3.win32, libxmlsec-1.2.11+.win32, libxslt-1.1.24.win32, xsl
A la recherche d'un cour pour les sockets MFC (visual studio 2008) [ par youssef_sympas ]
Bonjour tout le monde,Je cherche un cour pour la gestion des sockets avec les MFC pour visual studio 2008. Si vous avez un cour entre vos mains aidez
Debug avec Visual Studio 2005 [ par Chrigou ]
Bonjour,Je suis quand même étonné que personne n'a de réponse concernant ce problème...http://www.cppfrance.com/infomsg_EXCEPTION-HRESULT-0X80131417_8
ajouter le bibliothèque XML et un appel à une commande dos dans un programme C sous Visual Studio [ par boualiasma ]
Bonjour, Je suis entrain de programmer en C avec Visual studio 2008 sous Windows XP. Je voudrais parser un fichier XML dans mon programme C. J'ai trou
projet visual studio.net 2008 [ par chichoune73 ]
Bonjour, Je dois reprendre un projet écrit en c# existant à partir de visual studio.net 2008. J'ai 2 questions : 1) Je souhaiterais faire "un enregis
Installation Visual studio C++ 2003 sous XP 64bits [ par Quemar ]
Bonjour à tous,je ne sais pas si je suis au bon endroit pour poser cette question mais la voila:J'utilise depuis 5ans Visual studio 2003 pour créer de
erreurs incompréhensibles dans visual studio [ par peter2010 ]
Bonjour, j'ai quelques erreurs lorsque je compile avec Visual Studio, j'ai beau regarder dans MSDN, je ne comprends pas quels sont les erreurs. Les v
compiler un fichier pro*c avec visual studio 2008 ? [ par Flow8002 ]
Bonjour, je cherche une procedure afin de pouvoir compiler un fichier pc (pro*c oracle ) avec visual studio 2008. j'ai lu pas mal d'article sur la gen
Livres en rapport
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : WIN APIRE : WIN API par racpp
Cliquez pour lire la suite par racpp WIN APIWIN API par omarino_007
Cliquez pour lire la suite par omarino_007
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|