Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

DETECTION DES MEMORY LEAKS [VSTUDIO/WIN32]


Information sur la source

Description

Ce code permet, sous visual c++, de voir afficher en mode debug les blocs de memoire non désalloués
Il ne marche que sous windows, et seulement sous visual c++, mais j espere que cela pourra servir....Pour que cela marche, il faut lancer l executable en appuyant sur F5 (et non sur build/execute)
 

Source

  • #include <crtdbg.h>
  • #include <stdio.h>
  • void DetectMemLeaks()
  • {
  • _CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF|_CRTDBG_ALLOC_MEM_DF);
  • _CrtSetReportMode(_CRT_ASSERT,_CRTDBG_MODE_FILE);
  • _CrtSetReportFile(_CRT_ASSERT,_CRTDBG_FILE_STDERR);
  • }
  • int main ()
  • {
  • // Initialisation la detection
  • DetectMemLeaks();
  • char* str = new char[50]; // alloue de la mémoire
  • //delete[] str; // ici la memoire n est pas desalloue,
  • //une erreur apparaitra dans le panneau de debuggeur
  • // decommentez pour voir l erreur disparaitre
  • return 1;
  • }
#include <crtdbg.h>
#include <stdio.h>

void DetectMemLeaks() 
{ 
   _CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF|_CRTDBG_ALLOC_MEM_DF); 
   _CrtSetReportMode(_CRT_ASSERT,_CRTDBG_MODE_FILE); 
   _CrtSetReportFile(_CRT_ASSERT,_CRTDBG_FILE_STDERR); 
} 

int main ()
{
	// Initialisation la detection
	DetectMemLeaks();

	char* str = new char[50];		// alloue de la mémoire
	//delete[] str;					// ici la memoire n est pas desalloue, 
	//une erreur apparaitra dans le panneau de debuggeur
	// decommentez pour voir l erreur disparaitre

	return 1;	
}

Commentaires et avis

signaler à un administrateur
Commentaire de GoldenEye le 01/02/2004 16:03:18

Super
Court efficace
bref bien

signaler à un administrateur
Commentaire de Kaid le 01/02/2004 17:08:16

Je pense qu'il serait mieux d'exclure tout ce code d'une compilation en mode Release non ?

#ifdef DEBUG
#include &lt;crtdbg.h&gt;
#endif
#include &lt;stdio.h&gt;

#ifdef DEBUG
void DetectMemLeaks()
{
     _CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF|_CRTDBG_ALLOC_MEM_DF);
     _CrtSetReportMode(_CRT_ASSERT,_CRTDBG_MODE_FILE);
     _CrtSetReportFile(_CRT_ASSERT,_CRTDBG_FILE_STDERR);
}
#endif

int main ()
{
#ifdef DEBUG
    // Initialisation la detection
    DetectMemLeaks();
#endif

    char* str = new char[50];       // alloue de la mémoire
    //delete[] str;                 // ici la memoire n est pas desalloue,
    //une erreur apparaitra dans le panneau de debuggeur
    // decommentez pour voir l erreur disparaitre

    return 1;  
}

signaler à un administrateur
Commentaire de Cyberboy2054 le 01/02/2004 17:50:30

Oui mais bon en meme temps ces trois fonctions ne sont pas executées en mode release alors pourquoi s embeter ?
de plus j aurais mis #ifdef DEBUG && WIN32 histoire d eliminer plus de cas ...

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.