使用VS 查看对象模型以及结构体内存对齐
主要使用下面一条语句查看
cl /d1 reportSingleClassLayoutXXX xxx.cpp
其中XXX为要查看的对象的名称,xxx为源文件的名称
//查看父类对象模型
cl /d1 reportSingleClassLayoutBase 666对象模型.cpp
//查看子类对象模型
cl /d1 reportSingleClassLayoutSon 666对象模型.cpp
//查看结构体对象模型
cl /d1 reportSingleClassLayoutMyStruct 666对象模型.cpp
实现步骤:
1、“开始”——>“Visual Studio”——>如下图开发人员工具
2、点进去,如下图
3、在VS中的项目中(例如:此例中项目名叫继承中的对象模型),点击右键,选中如下图
4、复制出项目所在路径,如:C:\Users\DELL\source\repos\继承中的对象模型
5、在开发人员工具界面输入:cd 项目路径
6、查看对象模型(其实是内存对齐信息)
(1)查看子类(名为Son)的对象模型
class Base {
public:
int m_a;
protected:
int m_b;
private:
int m_c;
};
class Son : public Base {
public:
int m_1;
};
说明:
m_a 0~3 4字节
m_b 4~7 4字节
m_c 8~11 4字节
(2)查看结构体(名为MyStruct)的对象模型
struct MyStruct
{
int a; //0-3 4字节
char b; //4 1字节
//空:5-7 即\0
float c; //8-11 4字节
string s; //不是基本数据类型,是一个封装的类
};
小结
VS 使用cl /d1 reportSingleClassLayoutXXX xxx.cpp
可以查看类中成员变量/结构体变量的内存分配,也可以用来验证内存对齐。