Existe-t-il un outil que je peux utiliser pour voir la disposition de la mémoire d'héritage multiple du code C++ compilé?quel outil utiliser pour afficher la disposition de mémoire de l'héritage multiple
Répondre
Oui, mais vous ne l'aimerez pas beaucoup. Ce que vous devez faire est d'utiliser l'option -S (sur gcc, vérifiez votre documentation pour les autres compilateurs) et de générer le code assembleur, puis lisez-le.
Je ne sais pas exactement ce que vous voulez savoir. Pour cet exemple simple
class classA { };
class classB { };
class classC : public classA, public classB {
};
$ g++ -fdump-class-hierarchy test.cpp
produit les éléments suivants dans un fichier test.cpp.002t.class
Class classA
size=1 align=1
base size=0 base align=1
classA (0xb7b06780) 0 empty
Class classB
size=1 align=1
base size=0 base align=1
classB (0xb7b067bc) 0 empty
Class classC
size=1 align=1
base size=1 base align=1
classC (0xb7a736e0) 0 empty
classA (0xb7b067f8) 0 empty
classB (0xb7b06834) 0 empty
Voir la page gcc pour plus de détails. Changement CLASSA à ceci:
class classA { int aObj; virtual void aFun() { } };
pops Soudain une table virtuelle:
Vtable for classA
classA::_ZTV6classA: 3u entries
0 (int (*)(...))0
4 (int (*)(...))(& _ZTI6classA)
8 classA::aFun
Class classA
size=8 align=4
base size=8 base align=4
classA (0xb7b4d7f8) 0
vptr=((& classA::_ZTV6classA) + 8u)
Class classB
size=1 align=1
base size=0 base align=1
classB (0xb7b4d9d8) 0 empty
Vtable for classC
classC::_ZTV6classC: 3u entries
0 (int (*)(...))0
4 (int (*)(...))(& _ZTI6classC)
8 classA::aFun
Class classC
size=8 align=4
base size=8 base align=4
classC (0xb7aba820) 0
vptr=((& classC::_ZTV6classC) + 8u)
classA (0xb7b4da14) 0
primary-for classC (0xb7aba820)
classB (0xb7b4da50) 0 empty
Ce qui a l'air si étrange (_ZTI6classA et _ZTI6classC et _ZTV6classC) est en fait un pointeur sur le gcc d'information RTTI créé pour les classes . L'utilisation de -fno-rtti
montre qu'il affectera alors un pointeur NULL aux deuxièmes entrées des vtables. Nice, amusez-vous à creuser dans ces informations.
D'accord, c'est cool. –
- 1. Disposition de la mémoire d'un tableau .NET
- 2. Quel outil utiliser pour dessiner les grands nuages de points
- 3. Comment afficher graphiquement la disposition de la mémoire à partir d'un fichier .map?
- 4. Quel outil ORM devrais-je utiliser pour le développement .Net
- 5. Quel outil puis-je utiliser pour analyser ViewState dans Asp.Net?
- 6. Disposition des arguments Enfoncé mémoire
- 7. Quel outil puis-je utiliser pour générer un rapport d'utilisation de classe PHP pour mon application?
- 8. Comment déterminer la disposition de la mémoire d'un processus dans Windows?
- 9. G ++ outil de détection de fuites de mémoire multi-plateforme
- 10. Différents modes de disposition pour WindowsForms
- 11. Quel outil TFS recommanderiez-vous?
- 12. Quel est le meilleur outil pour maintenir la traçabilité
- 13. Comment afficher la mémoire gratuite de l'iPhone? et comment libérer la mémoire de l'iPhone?
- 14. code de disposition pour accesseurs
- 15. outil de test de perfomance pour un site web
- 16. Meilleur outil - Afficher les codes sources - Web
- 17. Quel est votre outil de débogage open source préféré?
- 18. équivalent de temps pour vérifier la mémoire
- 19. Conversion de disposition de table en div
- 20. Outil d'analyse des vidages mémoire de l'application .Net
- 21. Définition de la disposition de l'image datagridviewimagecolumn
- 22. Quel est l'outil pour afficher tous les dossiers MAPI d'échange?
- 23. Quel logiciel utiliser pour la machine virtuelle pour le développement de Windows?
- 24. Quel est le meilleur nouvel outil de développement de 2009?
- 25. Quel type de données utiliser?
- 26. Grille WPF pour la disposition des fenêtres
- 27. Compte multiple pour MobileStore?
- 28. Modification de la disposition du clavier pour un autre processus
- 29. Outil pour afficher le html en tant que hiérarchie
- 30. mise en mémoire cache dynamique de la page: afficher la page du cache html redirigé ou afficher la page dynamique?
Pourquoi voulez-vous faire cela? Si vous codez dépend de la disposition de la mémoire, vous le faites mal. Voir http://weblogs.asp.net/alex_papadimoulis/archive/2005/05/25/408925.aspx. –