标签:struct 方式 编译器 char 占用 code 内存 添加 位操作
1.
struct s {
char c; // 占用1个字节
int i; // 占用4个字节
short s; // 占用2个字节
}stu;
如果不对齐的话, 则c与i的前3个字节在同一个4字节内, s和i的后1个字节在另外一个4字节内, 当使用stu.i访问的时候, CPU要读取第一个4字节获取i的前三个字节的数据, 在读取后4个字节获取i的后一个字节的数据, 接受处理数据拿出i的值
如果对齐的话, 在编译器会自动添加一些无关的变量对数据进行填充, 使得c一个4字节, i一个4字节, s一个4字节, 这样获取stu.i就是一个内存访问了, 该结构体占了12个字节
2.
struct s {
char c;
short t;
int i;
char ch;
};
编译器的对齐方式中, c和t是在同一个4字节中的, 因为CPU一次性就可以读取出来一个4字节, CPU在过滤一下就可以取出c的值了, 这样节省了内存
标签:struct 方式 编译器 char 占用 code 内存 添加 位操作
原文地址:https://www.cnblogs.com/megachen/p/9789095.html