VS查看内存布局的方法:Properties - Configuration Properties - C/C++ - Command Line - Addtion Options
添加/d1 reportAllClassLayout
。这样会在Debug的输出中显示所有类的内存布局。如果要指定只查看某个类的,比如有个class A
,则只要添加/d1 reportSingleClassLayoutA
。
比如对如下的类:
class A {
virtual void f() = 0;
virtual void g() {}
virtual void h() {}
int i;
char a;
double d;
};
class B : public A {
virtual void g() {}
virtual void f() {}
int* p;
};
内存布局会在Debug的输出窗口中显示,记得修改显示输出来源
为生成
。
如果是Linux下,直接用下面的命令即可将xxx.cpp
的内存布局导出到一个生成的
xxx.cpp.002t.class
文件中:
g++ -fdump-class-hierarchy xxx.cpp