结构体四字节对齐

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
						//四字节对齐
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值