Accueil > Forum > > > > Savoir ou va la memoire...
Savoir ou va la memoire...
lundi 4 décembre 2006 à 16:31:26 |
Savoir ou va la memoire...

jojomillenium
|
Bonjour, J'aimerai comment savoir qu'est ce qui prend exactement la memoire dans mon programme! Genre dans mon debug je vois a un moment (genre au niveau d'un breakpoint) que ma classe Truc contient 315 element et prend 2Mb de memoire.... Je sais qu'il y a: if(diffMemState.Difference(oldMemState, newMemState)) { TRACE( "Memory leak!\n"); diffMemState.DumpAllObjectsSince(); }mais que pour les MFC et moi je travail sous visual C++ 6 win 32 sans MFC Y a t il un moyen? merci! jojo
|
|
lundi 4 décembre 2006 à 17:12:20 |
Re : Savoir ou va la memoire...

yann_lo_san
|
Tu peux utiliser une fonction du genre dans un log : (Lever les divisions (>> 20) pour avoir en octet et faire des stats précises) // utilisation mem en pourcentage DWORD GetUtilisationMemoire() { MEMORYSTATUSEX statex; ZeroMemory(&statex, 0); statex.dwLength =sizeof(MEMORYSTATUSEX); GlobalMemoryStatusEx(&statex); DWORD dw; // mémoire totale en Mo: dw = (DWORD) ((statex.ullTotalPhys >> 20) + 1); // mémoire disponible en Mo: dw = (DWORD) ((statex.ullAvailPhys >> 20) + 1); // mémoire utilisée en Mo: dw = (DWORD) ((statex.ullTotalPhys - statex.ullAvailPhys) >> 20); // pourcentage mem utilisée: return (statex.dwMemoryLoad); }
|
|
lundi 4 décembre 2006 à 18:32:01 |
Re : Savoir ou va la memoire...

jojomillenium
|
Et je dois inclure quoi pour que ca marche? parcke ca me met :
c:\documents and settings\joh@n\mes documents\epfl\projet de semestre\3d_visu\gestionfichier.cpp(24) : error C2065: 'MEMORYSTATUSEX' : undeclared identifier c:\documents and settings\joh@n\mes documents\epfl\projet de semestre\3d_visu\gestionfichier.cpp(24) : error C2146: syntax error : missing ';' before identifier 'statex' c:\documents and settings\joh@n\mes documents\epfl\projet de semestre\3d_visu\gestionfichier.cpp(24) : error C2065: 'statex' : undeclared identifier c:\documents and settings\joh@n\mes documents\epfl\projet de semestre\3d_visu\gestionfichier.cpp(28) : error C2228: left of '.dwLength' must have class/struct/union type c:\documents and settings\joh@n\mes documents\epfl\projet de semestre\3d_visu\gestionfichier.cpp(30) : error C2065: 'GlobalMemoryStatusEx' : undeclared identifier c:\documents and settings\joh@n\mes documents\epfl\projet de semestre\3d_visu\gestionfichier.cpp(36) : error C2228: left of '.ullTotalPhys' must have class/struct/union type c:\documents and settings\joh@n\mes documents\epfl\projet de semestre\3d_visu\gestionfichier.cpp(40) : error C2228: left of '.ullAvailPhys' must have class/struct/union type c:\documents and settings\joh@n\mes documents\epfl\projet de semestre\3d_visu\gestionfichier.cpp(44) : error C2228: left of '.ullTotalPhys' must have class/struct/union type c:\documents and settings\joh@n\mes documents\epfl\projet de semestre\3d_visu\gestionfichier.cpp(44) : error C2228: left of '.ullAvailPhys' must have class/struct/union type c:\documents and settings\joh@n\mes documents\epfl\projet de semestre\3d_visu\gestionfichier.cpp(48) : error C2228: left of '.dwMemoryLoad' must have class/struct/union type
Ca me donnera vraiment les stat que je veux? a l endroit ou j appelerai la fonction ca me dira quel classe prend tant de memoire pour tout ce qui utilise de la memoire dans mon programme?
|
|
lundi 4 décembre 2006 à 19:38:08 |
Re : Savoir ou va la memoire...
|
lundi 4 décembre 2006 à 19:50:25 |
Re : Savoir ou va la memoire...

jojomillenium
|
Je vais essayer d etre le plus precis possible: Je regarde sur le gestionnaire des taches la memoire que mon prog utilise, mais certain truc m on l air bizzare, augmentation de la memoire annormale, ... Alors j aimerai a un moment dans mon programme, pouvoir voir toute la memoire utilisé par mon programme et ou elle se situe, les valeurs, ... comme ca je verrai si j ai mal deleté un element ou non. Par exemple voir si ma class MyClass qui est un tableau d objets est deleté, ou combien d element elle comporte, et combien de place elle prend dans la memoire... j aimerai avoir une liste de tout ce qui prend de la memoire a un moment precis dans mon programme!
Vous voyez ce que je veux dire?
|
|
mardi 5 décembre 2006 à 05:43:48 |
Re : Savoir ou va la memoire...

badrbadr
|
Tu vois des trucs bizarre dans le TaskManager! Il faut s'inquiéter généralement quand ton programme prend de plus en plus de mémoire et que c'est continuel. Pour ce qui est de ton application, si c'est une application Windows, les chiffres sur le TaskManager ne veulent rien dire. Remarque qu'il suffit de réduire la fenêtre et la restaurer pour que ton application libère beaucoup de mémoire. En fait, pendant que l'utilisateur utilise ton application, Windows alloue de la mémoire pour des tâches de la GUI et ne la libère pas tout de suite. C'est ce que j'ai pu constater par expérience.
[:D] @++
|
|
mardi 5 décembre 2006 à 11:04:15 |
Re : Savoir ou va la memoire...

jojomillenium
|
C'est vrai que reduire la fenetre et la restaurer libere de la memoire, mais je desire tout de meme savoir exactement ou se trouve ma memoire! enfin precisement qu'est ce qui utilise ma memoire et combien elle utilise ! Y a un moyen?
|
|
mardi 5 décembre 2006 à 14:54:17 |
Re : Savoir ou va la memoire...

yann_lo_san
|
Pour tes erreurs de compil, je pense que tu n'as pas inclu <windows.h>, pour le reste, si a chaque allocation d'un objet de tes classes, tu insere un log dans le constructeur et le destructeur, tu verras dejà si certains objets produisent des copies non bénéfique, ou si ils ne sont pas détruit comme il faut. Les fuites les plus courantes sont GDI (SelectObject() et deleteObject()) et partout ou tu as des new (ou malloc) sans delete (ou free) et enfin les copies d'objets (constructeur par recopie)
|
|
mardi 5 décembre 2006 à 15:48:44 |
Re : Savoir ou va la memoire...

badrbadr
|
Oui, il y a la manière manuel de yann_lo_san mais pour faire automatique, à ma connaissance c'est presque impossible. Même si tu peux avoir un hook sur les allocations et sur les libérations, tu ne seras pas en mesure de connaître le nom de la variable, ni même l'emplacement du code qui alloue. Avec le debugger de Windows (Platform SDK), y a moyen d'aller plus en profondeur mais même là, je peux rien dire (jamais essayé) Bonne chance, ton problème est assez pointu
[:D] @++
|
|
lundi 11 décembre 2006 à 14:33:48 |
Re : Savoir ou va la memoire...

hibakusha
|
A mi chemin entre la torture d'un debugger et la technique du "j'men fout quand j'arette l'exe Windows fait le menage plutot bien en general...", il y a un petit truc simple à faire : encapsule les appels à malloc/free new/delete (plus complexe ici) par tes propres fonctions de gestion de la memoire.
Dans celles ci tu trace des infos du genre nombre d'appel, taille demandé, adresses retournés, demande de liberation, etc... tout ce qui peut être utile... tu log ça dans un fichier texte et ça peut déja être un premier pas vers la/les réponse(s) que tu cherche.
Le truc super drole en C++ c'est que tu peut redefinir new et delete, si t'as rien a faire et que tu veut finir ta vie à coder la nuit juste pour le fun, alors fonce petit homme.
zNoRt~!
|
|
Cette discussion est classée dans : genre, memoire, prend, diffmemstate
Répondre à ce message
Sujets en rapport avec ce message
c koi les fichiers h? [ par etmerde ]
je suis débutant(mais alors là, plus nul que ça tu trouves pas), et j'ai vu dans les codes c++ des trucs du genre include (machinchose.h) ou un truc d
Comment savoir le temps que prend un instruction? [ par Samoul ]
Je voudrait savoir comment calculer a l'aide d'un chronomètre ou de nimporte quel autres manière le temps qye peut prendre un instruction.Ex:Timer sta
Probleme fwrite en langage c [ par xavan ]
Voila un programme qui doit effectue un tri externe.jai les fonctions suivante(creation pour cree le fichier principal et les fichiers auxiliaire).Le
pourquoi aprés avoir fait une boucle mon textbackground prend tout l'écran ? [ par arconius ]
Voila mon prog et après avoir fait une boucle mon text background prend tout l'écran si quelqu'un à une solution se serait sympa merci d'avance#includ
Chaine de Char et Memoire ! [ par Soft ]
Bonjour,Qq1 connait il un moyen pour charger le contenu d'un fichier (pouvant atteindre plusieurs dizaines de MO) dans un char *buffer;Car meme avec u
liste des programmes en memoire !!! [ par FLOPPY ]
salut tt le monde ,je charche un code en C pour recupererla liste des programmes charger en memoire ainsi que ce qu'il renvoie en cas d'erreur (ce qui
problême de pointeurs (urgent) 2 [ par legrosnul ]
legrosnul:) toujours aussi nul!!:)Merci Beuss pour m'avoir repondu.Cela dit ta reponse m'étonne car c'est un bout du programme qui m'a été donné a l'e
pile memoire avec structure de pointeur [ par Nonobis ]
slttjs avec ma calculatrice des p'titsproblemes ...ils faut que je recupere les valeurs saisies que cela soit nombre ou signe et les stock dans la pil
division [ par superoi ]
bonjour en fait je doit realiser une calculatrice juste avec les operateur (+ - / * %) mais qui gere de grand chiffre (des chiffre de 10 000 digit pa
OU ON PREND LES LIBRAIRIES ? [ par frysa ]
Je voudrais savoir ou je peux prendre les librairies opengl plus presisement les suivantes : gl/glut.h gl/gl.h ??????????
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
|