字节对齐的意义

一、为什么需要进行字节对齐
1、各个硬件平台对存储空间的处理不尽相同,比如一些CPU访问特定的变量必须从特定的地址进行读取,所以在这种架构下就必须进行字节对齐了,要不然读取不到数据或者读取到的数据是错误的。
2、会对CPU的存取效率产生影响:比如有些平台CPU从内存中偶数地址开始读取数据,如果数据起始地址正好为偶数,则1个读取周期就可以读出一个int类型的值,而如果数据其实地址为奇数,那我们就需要2个读取周期读出数据,并对高地址和低地址进行拼凑,这在读取效率上显然已经落后了很多了。

二、字节对齐规则
1、数据类型自身对齐值:char类型自身对齐值为1,short对齐值为2,int, float, long对齐值为4,string对齐值为4,double对齐值为8,long double对齐方式为12。
2、指定对齐方式:#pragma pack (value)时指定的对齐value。
3、结构体或者类的对齐方式:其成员中自身对齐值最大的那个值
4、含有指定对齐方式的结构体和类的对齐方式:按照指定对齐方式和结构体或者类成员中自身对齐值最大的那个值。
比如:

#pragma pack (2)
struct temp
{
    static int A;
    
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值