结构体--字节对齐

本文详细介绍了字节对齐的目的、原因,明确了字节对齐涉及的四个关键概念,并通过实例解释了对齐策略。此外,还讨论了位域的概念,包括位域的存储规则和使用注意事项,揭示了位域在压缩存储中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、字节对齐目的及原因
1.目的:为提高程序的性能
2.原因:为访问未对齐的内存,处理器需要做两次内存访问,而对于对齐的内存仅需要访问一次。
二、字节对齐要区分的四个概念
1.基本数据类型的自身对齐值:(以32位x86机器为例)
char型:1字节
short型:2字节
int型、float型:4字节
double型:8字节
2.程序指定对齐值:

#pragma pack(value)

即指定对齐值为value
3. 自定义类型的自身对齐值:结构体或类中自身对齐值中最大的值
4. 自定义类型的有效对齐值:自定义类型的自身对齐值和指定对齐值中较小的值

例子:

#pragma pack(4)         //指定对齐值为4
struct test
{
    char a;    //1 + 1
    short b;   //2        自身对齐值为2 
    char c;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值