C++ 如何了解gcc';s c++;对象';s RTTI信息来自;这";指针?

C++ 如何了解gcc';s c++;对象';s RTTI信息来自;这";指针?,c++,pointers,gcc,polymorphism,rtti,C++,Pointers,Gcc,Polymorphism,Rtti,在多态类VC++下,对象的this指针上方有一个额外的指针(指向vtable),指向其RTTI信息 < P>我想知道GCC编译代码,对象是否存储与其RTTI信息相关的额外信息,并且有没有用C++代码访问它的方式,或者可以通过固定的偏移/位置访问GDB? 谢谢。 < P>多态的C++对象布局是依赖于实现的。例如: 根据作者的说法,这两种实现都使用一个RTTI指针,该指针位于vtable之前 请注意,两者都不同于Bjarne Stroustrup考虑的原始内存布局(请参阅“C++的设计和发展

在多态类VC++下,对象的this指针上方有一个额外的指针(指向vtable),指向其RTTI信息

< P>我想知道GCC编译代码,对象是否存储与其RTTI信息相关的额外信息,并且有没有用C++代码访问它的方式,或者可以通过固定的偏移/位置访问GDB?

谢谢。

< P>多态的C++对象布局是依赖于实现的。例如:

根据作者的说法,这两种实现都使用一个RTTI指针,该指针位于vtable之前

请注意,两者都不同于Bjarne Stroustrup考虑的原始内存布局(请参阅“C++的设计和发展”),后者将RTTI指针作为vtable的第一个元素。我不太清楚他们为什么会偏离这个简单的想法。也许这是由于兼容性的原因,RTTI只是被引入的。对于Visual C++,也可能有一些专利考虑:当时,保护了自己的VTALE布局)。 所有这些都是不可移植的,因此只有当您想剖析代码或编写一些调试代码时,才会对其感兴趣。如果你打算编写便携软件,最好限制自己使用