浅浅谈字节对齐

概述

今天要说的 问题比较基础,基础比较好的,可以不用阅读本文。因为你会觉得很傻逼,但却是我有点傻逼。

文章主旨

本文要来记录一下字节对齐的重要性。

示例一

下面来看一个简单的例子。

struct TightlyPacked {  
    char a;  
    int b;  
    short c;  
};  

这个结构体当直接求它的大小的时候,使用代码

std::cout << "TightlyPacked所占的字节数:" <<sizeof(TightlyPacked)<< std::endl;

求得的结构体总字节数为12.

示例二

当在上面的结构体上加上字节对齐,也就是我指定了字节对齐的数。

#pragma pack(push, 1) // 保存当前对齐状态,并设置1字节对齐  
struct TightlyPacked {  
    char a;  
    int b;  
    short c;  
};  
#pragma pack(pop) // 恢复之前的对齐状态  

这里指定了字节对齐数为1,按照一个字节对齐,求结构体所占字节数。

std::cout << "TightlyPacked所占的字节数:" <<sizeof(TightlyPacked)<< std::endl;

得到的总字节数为7.

总结

当指定了字节对齐数后,程序会按照约定的字节数来对齐,就会出现不同的结果。所以网络传输中也要指定结构体字节对齐数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肩上风骋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值