方法一:
1.打开VS自带的命令行工具。当然,你把cl.exe的目录写到环境变量中,直接在cmd中也能用。
这是VS2012的。
下面这个是VS2013的。都一样。
2.使用cl命令的/d1 reportAllClassLayout或reportSingleClassLayoutXXX选项。这里的reportAllClassLayout选项会打印大量相关类的信息,一般用处不大。而reportSingleClassLayoutXXX选项的XXX代表要编译的代码中类的名字(这里XXX类),打印XXX类的内存布局和虚函数表(如果代码中没有对应的类,则选项无效)。
其中,/d1reportSingleClassLayoutXXX 显示指定XXX类的内存布局
/d1reportAllClassLayou 显示所有类的内存布局
举个例子。注意,这个例子中为了简便,没有将类的析构函数定义为虚的。在下面的实例验证环节,我会将析构函数也定义成虚的。
下述两个类存储在test.cpp文件中。
在命令行中输入 cl /d1reportSingleClassLayoutB test.cpp
结果如下所示:
在命令行中输入 cl /d1reportSingleClassLayoutA test.cpp
结果如下所示:
转自: http://blog.csdn.net/friendbkf/article/details/49869703
方法二:
书上类继承相关章节到这里就结束了,这里不妨说下C++内存分布结构,我们来看看编译器是怎么处理类成员内存分布的,特别是在继承、虚函数存在的情况下。
工欲善其事,必先利其器,我们先用好Visual Studio工具,像下面这样一步一步来:
先选择左侧的C/C++->命令行,然后在其他选项这里写上/d1 reportAllClassLayout,它可以看到所有相关类的内存布局,如果写上/d1 reportSingleClassLayoutXXX(XXX为类名),则只会打出指定类XXX的内存布局。近期的VS版本都支持这样配置。
还可以查看:http://blog.csdn.net/daydreamingboy/article/details/8982563
http://blog.csdn.net/tennysonsky/article/details/52054291