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
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
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.
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.
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 :
Envoyé par La norme, §9.2.12
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 ?
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...
=> 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 :-)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
Merci
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager