问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

结构体成员的字节对齐

发布网友 发布时间:2022-04-25 05:15

我来回答

2个回答

热心网友 时间:2023-10-29 01:32

这个问题都很有深度啊;

首先我要说的是,字节对齐在不同编译器下语法是不一样的,在GCC中是#pragma push(1) #pragma pack(); 在MS C++中用VC的代码项里可以调整,默认是8字节;

typedef struct
{
char c;
int i;
}test;

字节对齐,是对齐,比如说char 与 int 如果是4字节对齐,那么char也会占用4个字节,总共占8字节,而且结构体对象存储是按照顺序存的,char 肯定在int前面。第二种情况如果1字节对齐,意味着char只占1字节,而结下来int会占用4字节,这个N字节对齐的意思是,每个成员占用空间必须是N字节的倍数,不足N字节的占用N字节。那么以1字节对齐那它占用5个字节。

还有你说的每种数据是低位还是高位在前,这个根处理器有关,Intel处理是小端对齐,比如说一个整数522387969用16进制表示是:0x1f 23 02 01,在Intel处理器中表示是0x01 02 23 1f,所以在内存用0x01 02 03 1f来示522387969,这就是所谓有小端对齐;但在arm处理器中522387969表示是0x1f 23 02 01,这就是所谓的大端对齐,这种方式又叫作网络字节序。

当然前面说的字节序只是对int long short这些内置(built in)数据类型用效,对结构体内如果有int long这类成员也会有所谓的字节序,如前面所说,不管是什么序结构体对象存储是按照顺序存,先定义的成员肯定在后定义的成员前面,但单个成员有字节序,不知这样说,你的明白?

不是,请仔细体会这句话:这个N字节对齐的意思是,每个成员占用空间必须是N字节的倍数,不足N字节的占用N字节。

大于N字节就凑够N字节的倍数,比如按3字节对齐,那么一个4字节的int将占据6字节~

热心网友 时间:2023-10-29 01:32

为什么B里面的b要另起一行,而不是跟a,c放在一起呢??
结构的定义是每个成员的地址是按顺序排列的,不能随便排的。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
巴西龟最长活多久,家养!!! 养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 结构体对齐 关于C语言中的结构体字节对齐 结构体字节对齐原则 C语言 结构体对齐 什么是C语言结构体字节对齐,为什么要对齐 c语言结构体对齐的问题。 一个局域网有255个IP地址,为什么却只有254个可用?剩下的一个不能用的是哪个?为什么不能用? 饿了吗、美团外卖为什么不可以货到付款 美团 饿了么 可以货到付款吗 饿了可以货到付款吗 饿了么代付怎么操作 饿了么可以货到付款吗 ip地址为何到了255就没了,这样一来会不会不够用 哪里可以了解OPPO Reno3系统语言切换方法? OPPO Reno3如何在线升级? OPPO Reno3怎么在线升级呢? OPPO Reno3系统语言切换方法有哪些呢? opporeno3手机系统内存快满了,正常么? opporeno3系统出厂Android版本是多少? 谁能告诉我OPPO Reno3系统语言切换方法? 刚开始学结构体,什么叫结构体成员对齐? C 语言结构体对齐问题 如何判断对方手机是真的关机了还是设置了呼叫转移? C语言结构体的边界对齐是怎么回事啊? C语言结构体怎么对齐?按最大字节对齐?struct pp{int a;float b; doubl C++ 关于结构体对齐 VC中的结构体对齐是怎么回事?能不能具体解释一下?谢谢…… 结构体嵌套联合体字节对齐问题 微信可以识别关机 C++ 结构体对齐方式转换? 求助关于C语言结构体对齐的问题 结构体内存对齐问题 关于结构体字节对齐 结构体的定义为什么要字节对齐 梦见男友跟别的女人暧昧?是为什么 怎么确定对方是真关机了,或己换号 梦见男朋友在酒店和别的女人亲热,这梦什么意思?谁能解解 快手主播得到的礼物可以给别人刷吧! 在快手上抽奖抽到900多元钱的礼物,刷给了主播,可以提现吗 快手收到的礼物可以刷出去吗