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

C++ Discussion :

Sizeof d'une architecture d'objets


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Par défaut Sizeof d'une architecture d'objets
    Bonjour,

    Je programme avec Visual Studio 2005, et j'ai créé un petit projet qui commence à prendre de l'envergure.

    Parmi les objets que le programme manipule, certains sont imbriqués : un conteneur qui contient des boites, qui contiennent des objets...

    J'aimerais determiner la place occupée en mémoire par le conteneur (par exemple).

    C'est à dire la place qu'il occupe lui + ses boites + les objets de ses boites....

    Vu que c'est à des fins de tests, j'aimerais eviter d'implementer de nouvelles méthodes, j'aimerais juste savoir si c'est possible de connaitre l'espace occupé grâce à un debuggeur ou quelque autre manip'

    Merci.

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 392
    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 392
    Par défaut
    Pas à ma connaissance, à moins de passer par des opérateurs d'allocation spéciaux, et monopoliser un des "types de bloc" (il me semble qu'il n'y en a pas plus de seize disponibles) pour ça...

    En C++, tu auras plus vite fait de faire ta propre fonction de comptage de taille...
    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é
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Par défaut
    Oui, probablement...

    Je comptais sur une fonctionnalité méconnue du debuggeur ou un truc de ce genre...

    Tant pis !

  4. #4
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut
    pour une estimation tu peux utiliser les task manager. Tu fais une version du prog sans instancier la taille que tu veux mesurér et un autre avec.
    Puis la differwences des deux resultats te donneras une approximation.

    Sinon tu sera obliger de faire de nouvelles methodes. / de coder

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par ZaaN
    pour une estimation tu peux utiliser les task manager. Tu fais une version du prog sans instancier la taille que tu veux mesurér et un autre avec.
    Puis la differwences des deux resultats te donneras une approximation.

    Sinon tu sera obliger de faire de nouvelles methodes.
    tres large comme estimation, car le task manager ne donne pas la mémoire allouée a un instant donnée mais une partie de la mémoire réservée...

    le plus judicieux pour estimer la taille de son conteneur est de faire qqchose comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      sizeof(conteneur) // taille du conteneur vide
    + sizeof(boites) * conteneur.size()  // n fois la taille d'une boite
    + sizeof(objet) * conteneur.size()   // n fois la taille d'un objet dans la boite
    bien sur, ceci est tres vague. je suppose ici qu'une boite ne comprend qu'un seul objet a la fois, qu'un conteneur référence ses boites par pointeurs, et encore (sans parler que je ne factorise pas mon code)... il faudrait connaitre l'existant plus précisemment pour faire un algo qui tienne la route. mais ca donne une idée...

  6. #6
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Par défaut
    toxcct :

    C'est evidemment la meilleure solution.

    Et c'est celle que j'ai implementée. Vu que c'était juste pour faire quelque tests, je voulais eviter d'ajouter du code un peu partout dans mon programme.

    Mais maintenant, c'est fait.

  7. #7
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut
    Citation Envoyé par toxcct
    tres large comme estimation, car le task manager ne donne pas la mémoire allouée a un instant donnée mais une partie de la mémoire réservée...
    Pourtant j ai des resultats, certe pas exact dans l'absolu, mais si mon programme instancier durant don execution les differences relatives sont tres precises...

    Alors experience faites, ca donne un bonne estimation

Discussions similaires

  1. Créer une architecture objet pour une appli
    Par thor76160 dans le forum NodeJS
    Réponses: 2
    Dernier message: 02/05/2013, 23h25
  2. Réponses: 12
    Dernier message: 03/07/2009, 13h37
  3. [VB6] Sauvegarder une collection d'objets
    Par Sayagh dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 19/09/2003, 11h58
  4. [MFC] Retourner une liste d'objets
    Par 1cado dans le forum MFC
    Réponses: 10
    Dernier message: 28/07/2003, 12h11
  5. [VB6]Passage par référence d'une prop. d'objet à une fct
    Par -gYs- dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 02/09/2002, 08h55

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