请选择 进入手机版 | 继续访问电脑版

 找回密码
 立即注册
搜索
查看: 315|回复: 0

结构体内存对齐规则

[复制链接]

263

主题

0

回帖

1028

积分

管理员

积分
1028
发表于 2024-1-13 00:20:08 | 显示全部楼层 |阅读模式

规则 1:结构体中元素是按照定义顺序一个一个放到内存中去的,但并不是紧密排列的。从结构体存储的首地址开始,每一个元素放置到内存中时,它都会认为内存是以它自己的大小来划分的,因此元素放置的位置一定会在自己宽度的整数倍上开始(以结构体变量首地址为 0 计算)。

规则 2:在经过第一原则分析后,检查计算出的存储单元是否为所有元素中最宽的元素的长度的整数倍,是,则结束;若不是,则补齐为它的整数倍。

struct route_entry {
    uint16_t addr;
    uint32_t teAddr;
    uint8_t relayNum;
    uint16_t relay[NWK_RELAY_MAXNUM];
    uint8_t age;
};

struct route_table {
    uint8_t count;
    struct route_entry entry[2];
    uint16_t crc;
};

sizeof(struct route_entry) == 24
sizeof(struct route_table) == 56

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|深圳市棱讯科技有限公司 ( 粤ICP备2024228160号-2 )|网站地图

GMT+8, 2024-5-18 08:54 , Processed in 0.018475 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表