使用g ++编译器打印C++对象的布局

zah*_*eer 11 c++ g++ memory-layout

有没有办法使用g ++编译器或任何其他方法打印C++对象的布局.一个简化的例子(假设int需要4个字节)

class A{
  int a;
};

class B:public A{
  int b;
}
Run Code Online (Sandbox Code Playgroud)

所以输出就是

A-
0      4
+  a   +

B-
0      4      8
+ A.a  +  b   +
Run Code Online (Sandbox Code Playgroud)

理解对象的布局(在我的例子中是虚拟机代码)会很有用.

提前致谢.

问候,扎赫尔

fre*_*low 10

看看手册页,-fdump-class-hierarchy也许吧?


Phi*_*ipp 1

C++没有内省。一旦你的代码被编译,关于类的每一条信息都会丢失,除了typeidandstd::type_info可以给你的信息。

  • 我不认为他在谈论运行时内省,而是在谈论一些编译器选项,该选项能够告诉他编译器为其代码中的对象选择的内存布局。 (4认同)