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 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_42173948/article/details/105452489