Fuite mémoire

cs_mamag Messages postés 48 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 6 octobre 2005 - 6 sept. 2005 à 12:05
cs_mamag Messages postés 48 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 6 octobre 2005 - 7 sept. 2005 à 10:39
Bonjour,

j'ai un programme en VC++ qui fait appel à une DLL (également faite en C++).
je voudrais savoir comment faire pour détecter une fuite mémoire dans ma DLL.

merci pour votre aide.

4 réponses

cs_dofdof Messages postés 15 Date d'inscription vendredi 26 novembre 2004 Statut Membre Dernière intervention 19 septembre 2005
6 sept. 2005 à 13:47
Salut,

si tu as les sources de la dll c'est possible sinon c pas possible.

tu mets tout en commentaire dans la dll sauf la premiere ligne

compile la dll et lance la comme projet de demarrage une fenetre apparait et tu lui indique l'exe (le programme qui appel la dll.)

tu regarde si tu as des fuites memoire.

Puis si pas de fuite tu met tout en commantaire sauf la premiere et la deuxieme ligne etc..

mais le mieux avant est de verifier si tu n'as pas oublie de delete (A chaque new tu doit avoir un delete et si tu fais par exemple:

Ca a = new Ca();

et plus loin tu refait:
Ca a = new Ca();

il faut d'abord faire delete a; puis Ca a = new Ca();
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
6 sept. 2005 à 13:51
#include <crtdbg.h>

void DetectMemLeaks()


{


_CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF|_CRTDBG_ALLOC_MEM_DF);


_CrtSetReportMode(_CRT_ASSERT,_CRTDBG_MODE_FILE);


_CrtSetReportFile(_CRT_ASSERT,_CRTDBG_FILE_STDERR);


}

Un appel au debut du prog, les memory leaks (s'ils existent) sont indiqués dans la fenetre 'Sortie' de VC++ (Code donc QUE pour VC++).

+2(p - n)
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
6 sept. 2005 à 14:04
C'est bien tout ceci mais prendre l'habitude d'écrire sans fuites sera toujours préférable, c'est comme compiler direct en release, ça gagne du temps.

Pour un malloc on met de suite le free plus bas.
new => delete.
_RecordsetPtr->Open => _RecordsetPtr->Close().
_ConnectionPtr->Open() => _ConnectionPtr->Close()
etc....

ciao...
BruNews, MVP VC++
0
cs_mamag Messages postés 48 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 6 octobre 2005
7 sept. 2005 à 10:39
est ce que le fait d'ajouter en début de programme ceci:
#include

et faire tourner l'appli en mode debug permet de vérifier les fuites méméoires?
(avec cette méthode, on m'indique bien les memory leaks, mais est ce suffisant?)
0
Rejoignez-nous