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 :

Implémentation des objets en mémoire


Sujet :

C++

  1. #1
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut Implémentation des objets en mémoire
    Bonjour, je cherche de la documentation sur la représentation des classes(des instances de classes plutot) en mémoire ? Y'a t-il une normalisation que la majorité des compilo implémentent ? si oui, ou puis-je trouver ca ?
    Merci
    La vitesse de la lumière étant supérieure à celle du son, il apparaît normal que beaucoup de gens paraissent brillants jusqu'à ce qu'ils l'ouvrent.

  2. #2
    Membre actif Avatar de Steki-kun
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 222
    Points : 281
    Points
    281
    Par défaut
    Personnellement, j'étais toujours parti du principe que les différents éléments d'une instance d'un objet étaient stockés de manière contiguë en mémoire (pr les méthodes seule l'adresse de la fonction, le code proprement dit et les autres membres statiques s'il y en a, étant stockés ailleurs), et c'est aussi ce que disait mon prof de Théorie des langages de prog, mais je n'ai jamais vu de norme ou de truc précis à ce sujet, alors si vous avez je suis preneur aussi.
    I'm the kind of guy that until it happens, I won't worry about it. - R.H. RoY05, MVP06

  3. #3
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Je crois que chacun fait comme il lui plait. A ça tu rajoutes la gestion des alignements.
    Dans mes souvenirs Lippman avait écrit un bouquin, sur le modèle objet du C++, qui pourrait contenir des éléments de réponse.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Sur un modèle objet possible pour le C++, même si le titre est inside the C++ object model.

    Un petit extrait de la norme indique quelques rares restrictions sur ce que peut faire le compilo :

    Citation Envoyé par La norme, §9.2.12
    Nonstatic data members of a (nonunion) class declared without an intervening accessspecifier are allocated so that later members have higher addresses within a class object. The order of allocation of nonstatic data members separated by an accessspecifier is unspecified (11.1). Implementation alignment requirements might cause two adjacent members not to be allocated immediately after each other; so might requirements for space for managing virtual functions (10.3) and virtual base classes (10.1).
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut
    D'accord, finalement, chaque compilo implémente comme il veut mais généralement, ils s'amusent pas trop à changer l'ordre, sauf s'ils peuvent gagner de l'espace à cause du problème d'alignement ?
    La vitesse de la lumière étant supérieure à celle du son, il apparaît normal que beaucoup de gens paraissent brillants jusqu'à ce qu'ils l'ouvrent.

  6. #6
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Non, tant que c'est avec le même "access specifier" (private, protected, public), ils n'ont pas le droit de modifier l'ordre, même pour des gains de place liés à l'alignement. Donc tu peux avoir des trous et il peut être intéressant comme optimisation de déclarer tes membres dans un ordre spécifique.

    Par contre, une question : Pourquoi veux tu savoir ça ? En général, les gens que j'ai vu se poser ce genre de question, c'était pour faire faire juste après des choses indécentes à leur compilateur...
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  7. #7
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut
    Par contre, une question : Pourquoi veux tu savoir ça ? En général, les gens que j'ai vu se poser ce genre de question, c'était pour faire faire juste après des choses indécentes à leur compilateur... Rolling Eyes
    => Ce serait plutot des choses indécentes avec un programme comme overflow...Mais NON, ce n'est pas mon but, c'était une question qui me tracassait, c'est pas la seule mais je voulais une réponse pour celle-ci :-)
    Merci
    La vitesse de la lumière étant supérieure à celle du son, il apparaît normal que beaucoup de gens paraissent brillants jusqu'à ce qu'ils l'ouvrent.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Garder des objets en mémoire dans le service.
    Par Reminouche dans le forum Services Web
    Réponses: 5
    Dernier message: 23/05/2011, 17h22
  2. Réponses: 6
    Dernier message: 05/03/2008, 13h00
  3. Implémenter des objets corba en delphi7
    Par Klemsy78 dans le forum CORBA
    Réponses: 1
    Dernier message: 06/11/2007, 09h57
  4. Implémentation des fonctions mathématiques
    Par mat.M dans le forum Mathématiques
    Réponses: 9
    Dernier message: 17/06/2002, 16h19
  5. Importer des objets de 3dsMax
    Par Anonymous dans le forum OpenGL
    Réponses: 3
    Dernier message: 06/05/2002, 13h53

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