IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Comment conna�tre l'empreinte m�moire d'une structure de donn�es


Sujet :

MFC

  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    303
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 303
    Par d�faut Comment conna�tre l'empreinte m�moire d'une structure de donn�es
    Bonjour,

    Je pense avoir d�ja vu un post sur le sujet, mais pas moyen de le retrouver.
    Je charge une 'base de donn�es' constitu�e de classes C++. La m�moire pour chacune de ces classes est allou�e avec l'op�rateur new. J'aurai aim� conna�tre la place totale utilis�e en m�moire par cette 'base de donn�es'.

    Avez-vous une id�e?

    Merci

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    � part surcharger l'op�rateur new pour en faire une fonction qui compte la m�moire allou�e (et d�duit la m�moire lib�r�e), je ne vois pas trop...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre �clair�
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    303
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 303
    Par d�faut
    J'ai essay� en allouant de la m�moire avant et apr�s le chargement de la base. J'obtient deux pointeurs p1 et p2 est ce que la difference entre ces deux pointeurs n'est pas +- repr�sentative de l'espace n�cessaire pour la DB?

  4. #4
    Membre confirm�
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    147
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 147
    Par d�faut
    Je suis pas certain � 100% mais je pense que l'allocation de la m�moire n'est pas lin�aire.
    En fait la RAM est plus ou moins fragment� du coup rien ne garantie que si tu alloues un pointeur p1 sur 10 octets et ensuite p2 sur xx octets, tu puisses atteindre p2 en faisant p1+10+n.
    J'esp�re que ma r�ponse est assez claire.

  5. #5
    Membre �clair�
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    303
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 303
    Par d�faut
    Oui merci,
    Je constate en effet que d'une execution � l'autre le r�sultat n'est pas le m�me.
    Comment pourrais-je surcharger l'op�rateur "new" pour qu'il me retourne l'espace allou�?

  6. #6
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 505
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 505
    Par d�faut
    L'op�rateur "sizeof" ne fonctionne pas dans votre cas ?

  7. #7
    Membre �clair�
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    303
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 303
    Par d�faut
    H�las non,
    Ce sont des objets complex (des classes avec h�ritage multiple) et certains de ces objets font de l'allocation dynamique.

    Merci

  8. #8
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 505
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 505
    Par d�faut
    La version Debug des MFC red�finit la fonction "new" pour installer un tracker m�moire.
    Tu peux t'en inspirer pour faire tes propres besoin.

  9. #9
    Membre �clair�
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    303
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 303
    Par d�faut
    Merci,

    Sans vouloir abuser sais-tu ou je peux trouver le code de ce DEBUG_NEW

    Merci

  10. #10
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Si tu as MFC, alors tu as les sources avec.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Expert confirm�
    Avatar de Mat.M
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 538
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 538
    Par d�faut
    Citation Envoy� par M�dinoc Voir le message
    � part surcharger l'op�rateur new pour en faire une fonction qui compte la m�moire allou�e (et d�duit la m�moire lib�r�e), je ne vois pas trop...
    oui et non parce que l'OS va d�placer ou non des blocs de m�moire donc c'est difficile de connaitre pr�cis�ment l'adresse de l'instance d'une classe sauf en le demandant � un instant pr�cis.


    Il faut peut-�tre trouver une autre alternative � new et utiliser les API win32 sp�cifiques d'allocation m�moire

  12. #12
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 505
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 505
    Par d�faut
    Mat.M, �tes moi d'un doute, on n'est pas manag� et Windows impl�mente bien la m�moire virtuelle gr�ce aux CPU Intel, non ?
    Mat.M devrait un peu dormir, il fait un peu de surmenage, LOL.

    Si c'est juste pour du d�bugging :
    MFC
    http://msdn.microsoft.com/en-us/libr...64(VS.80).aspx
    C RUNTIME
    http://msdn.microsoft.com/en-us/libr...44(VS.80).aspx

    Normalement, c'est dans les sources. Mais pour correctement tracker l'utilisation m�moire, il faut conna�tre le mode de cr�ation des objets.
    Quand tu parles de classes C++ et de nes, c'est dans un environnement MFC ?

    Pour le code source, regarde l'impl�mentation des operateurs new et delete dans afxmem.cpp de ton VS.

  13. #13
    Membre �clair�
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    303
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 303
    Par d�faut
    Citation Envoy� par bacelar Voir le message
    Mais pour correctement tracker l'utilisation m�moire, il faut conna�tre le mode de cr�ation des objets.
    Quand tu parles de classes C++ et de nes, c'est dans un environnement MFC ?

    Pour le code source, regarde l'impl�mentation des operateurs new et delete dans afxmem.cpp de ton VS.
    Oui je travaille avec les MFC, j'ai bien trouv� l'op�rateur new dans afxmem.cpp, je vais essay� de creuser de ce c�t� Merci

Discussions similaires

  1. R�ponses: 2
    Dernier message: 11/01/2012, 09h06
  2. R�ponses: 2
    Dernier message: 19/02/2007, 15h46
  3. R�ponses: 9
    Dernier message: 24/01/2006, 09h34
  4. R�ponses: 11
    Dernier message: 13/01/2006, 15h30
  5. R�ponses: 3
    Dernier message: 28/06/2005, 09h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo