struct s
{
char c;
int i;
};
结构体对齐
- 为什么要元素对齐访问?
- 配合硬件(ddr、lcd、mmu),硬件本身有物理限制,对齐排布访问效率高。四字节对齐,配合32位系统,以4字节为一个单位,读取速度最快,效率最高。若没有四字节对齐,需要读取多条指令,效率低。
- 对比:对齐访问、效率高但牺牲内存空间;非对齐访问,内存利用率高,但效率低。
结构体如何对齐
-
对齐最小单位,按照1字节、4字节、8字节对齐、四的倍速?
- 取决于编译器。
-
如何对齐?
- 成员变量自身对齐,如地方short不能放在奇数上。
- 结构体本身按照最大成员变量空间对齐。
- 满足以上条件,并且内存空间占用最小
例如
struct STR1 {
char c; //1 4
int i; //4 4
short s; //2 8
double d; //8 8
}; //15 24
//double对齐
typedef struct STR2 {
char c; //1 2
short s; //2 2
int b; //4 4
double d; //8 8
}STR; //15 16
//四字节对齐
版权声明:本文为weixin_42173948原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。