cs_jipp
Messages postés20Date d'inscriptionmardi 19 avril 2005StatutMembreDernière intervention12 août 2005
-
11 août 2005 à 11:02
cs_jipp
Messages postés20Date d'inscriptionmardi 19 avril 2005StatutMembreDernière intervention12 août 2005
-
12 août 2005 à 07:54
Bonjour,
J'ai actuelle des problèmes de fuites mémoires sur mon application VC++6 et je ne sais pas trop comment faire pour trouver les erreurs.
En fait parfois le debuger donne des informations sur les données causant le problème mais parfois il ne donne que les adresses mémoires. Mon problème est donc de trouver quelles sont les données qui sont mappées à ces adresses.
Existe-il un/des outils permettant de régler ce PB.
Les messages que j'ai dans le debug sont du type :
Detected memory leaks!
Dumping objects ->
{67} normal block at 0x00811690, 284 bytes long.
Data: <2 ,O M xs > 32 FD 06 2C 4F 81 13 AF 4D 85 F3 A6 83 78 73 BC
{66} normal block at 0x008117E0, 72 bytes long.
Data: < @ h > 80 40 0A 68 00 00 00 00 FF 00 00 00 1C 01 00 00
{52} normal block at 0x008119F0, 33 bytes long.
Data: < C > 00 43 00 CD CD CD CD CD CD CD CD CD CD CD CD CD
{51} normal block at 0x00811A40, 40 bytes long.
Data: < |L > 14 7C 4C 10 16 00 00 00 00 00 00 00 00 00 00 00
Object dump complete.
BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024103 11 août 2005 à 11:26
Une façon de trouver tes fuites mémoires: tu trace tes new/delete.
A chaque fois que t'en fais un, tu écris l'adresse de ton pointeur (soit dans un fichier, soit dans une sortie stdout ou stderr)
BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024103 11 août 2005 à 14:51
pourquoi pas?
Tu as une option pour les entêtes précompilées:
ProjectSettings>C/C++>Category=Precompiled Headers
Tu dois pourvoir cocher "Not using precompiled headers"
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
cs_jipp
Messages postés20Date d'inscriptionmardi 19 avril 2005StatutMembreDernière intervention12 août 2005 11 août 2005 à 15:02
En effet je peux cocher ça ... mais si je le fais et que je commente tous les #include "stdafx.h" je me retrouve avec plus de 1500 erreurs dans mon appli C++
BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024103 11 août 2005 à 15:11
Dis donc, t'as pas de bol... :)
Bon, on va faire autrement:
- tu rajoute l'include dans les nouveaux fichiers
- tu retourne dans ProjectSettings>... et tu coche "Create..."
- tu compile
Pour les prochaines compil, tu pourras cocher "Automatic Use..."
Si cela ne marche pas....bah, inspire toi du code et crée toi-même tes fichiers
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024103 11 août 2005 à 15:29
vecchio56> t'es sûr de ton coup?
jipp> bon bah...en avant les mimines et hop! plein de fprintf pour écrire les adresses de tes pointeurs après les new et avant les delete...
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
cs_jipp
Messages postés20Date d'inscriptionmardi 19 avril 2005StatutMembreDernière intervention12 août 2005 11 août 2005 à 15:35
Le PB Bruno c'est que j'ai très peu de new/delete dans mon appli ...alors j'ai des doute là dessus.
Par contre y'a un truc bizarre dans mon code ... généré en automatique (voir la ligne pink , je ne trouve pas le delete associé à ce new, est-ce normale ? ):
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
// Change the registry key under which our settings are stored.
// TODO: You should modify this string to be something appropriate
// such as the name of your company or organization.
SetRegistryKey(_T("Local AppWizard-Generated Applications"));
LoadStdProfileSettings(); // Load standard INI file options (including MRU)
// Register the application's document templates. Document templates
// serve as the connection between documents, frame windows and views.
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CRaccTramDoc),
RUNTIME_CLASS(CMainFrame), // main SDI frame window
RUNTIME_CLASS(CRaccTramView));
AddDocTemplate(pDocTemplate);
.... }