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
problème de chargement des classes [ par amine390 ]
salut tous le monde, je suis un débutant en c,j'ai réussi d'installer Visual studio 6 et j'ai lancer une application hello world #include "stdafx.h" i
Configuration Visual studio 2008 [ par SEB73460 ]
Bonjour à tous, Je débute en C++, j utilise VS2008 j ai télécharger des exemples de code mais quand je les utilisent, j ai " Fatal error C1083 etc .
Visual studio c++ lancer ressource [ par PriMe2302 ]
bonjour, J'ai dans mon projet un fichier exécutable en ressource (une application console) , je voudrais savoir comment le lancer, comment détecter l
Problème de compilation sous visual studio 2008 [ par chakiraziza ]
Bonjour, Voici mon problème, j'ai un projet (Visual studio 2008) qui fonctionnait il y a quelque mois et j'ai voulu le retester ajd. Malheureusement
problème d'installation de Visual Studio C++ 6.0 [ par zizouy ]
Salut, j'ai un problème lors de l'installation de Visual, s'il vous plait m'aider: à la fin de l'installation un affiche qui sort:" le programme d'in
URGENT!!Lire un fichier sur Visual Studio C++ [ par ielalami ]
Bonjour, J'utilse Visual Studio C++ 2008 Express avec Qt.Je veux afficher sur mon interface les données récupérées sur un fichier texte.J'ai essayé p
Visual Studio : une vrai m**** ou c'est moi qui suis obtus ? [ par simonpelloquin ]
Bonjour, Ancien delphiste, je poursuis mon apprentissage de l'info sur visual studio avec le c++ et c#. Je ne peux m'empêcher de faire des comparaiso
Livres en rapport
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|