后彼 发表于 2025-6-4 19:52:31

【C/C++】5.字节对齐和字节填充

字节对齐(alignment)和字节填充(padding)是优化内存访问效率和确保数据结构正确存储的重要机制。
了解字节对齐和填充的原理可以帮助我们更好地设计数据结构,并且减少因不合理的内存布局引起的性能问题或程序错误。
1. 字节对齐(Alignment)

字节对齐是指在内存中存储数据时,将数据放置在满足其大小的倍数地址上。例如,一个4字节的int通常需要放在4字节对齐的地址(如0x00、0x04、0x08等)上。这是因为计算机内存是按照特定字节数访问的,对齐可以提高CPU访问内存的速度。
对齐规则通常为:

[*]数据类型的对齐要求是其自身大小的倍数(例如int类型通常4字节,需要4字节对齐)。
[*]结构体的总对齐是其中最大成员的对齐大小。
2. 字节填充(Padding)

为了实现对齐,编译器在结构体或类成员之间添加一些空闲字节(填充字节),确保每个成员都位于合适的地址上。填充会影响结构体的大小,使其可能比成员的总大小还大。了解字节填充有助于优化结构体设计,减少内存浪费。
示例代码

#includestruct Example {   char a; // 1字节   int b; // 4字节   short c; // 2字节 };  /* 在字节对齐要求下,编译器会插入填充字节,使int b和short c在对齐的地址上。 */ int main() {   std::cout

梁丘眉 发表于 2025-11-2 18:08:37

感谢分享

揉幽递 发表于 2025-12-11 01:31:46

不错,里面软件多更新就更好了

僭墙覆 发表于 2026-1-5 21:16:15

新版吗?好像是停更了吧。

聚怪闩 发表于 2026-1-11 06:57:50

这个有用。

沃盼盼 发表于 2026-1-19 06:09:44

懂技术并乐意极积无私分享的人越来越少。珍惜

左丘雅秀 发表于 2026-1-21 16:47:42

感谢,下载保存了

汹萃热 发表于 2026-1-23 02:33:40

过来提前占个楼

蓬庄静 发表于 2026-1-24 10:29:22

过来提前占个楼

秦欣艷 发表于 2026-1-27 02:43:48

谢谢分享,辛苦了

喜及眩 发表于 2026-1-28 03:05:31

谢谢楼主提供!

材部 发表于 2026-1-28 07:12:25

谢谢楼主提供!

吟氅 发表于 2026-1-30 03:28:54

鼓励转贴优秀软件安全工具和文档!

缑莺韵 发表于 2026-2-5 09:06:37

感谢,下载保存了

喙审 发表于 2026-2-9 14:02:42

东西不错很实用谢谢分享

魄柜 发表于 2026-2-9 14:03:28

感谢,下载保存了

尹心菱 发表于 2026-2-10 16:51:32

懂技术并乐意极积无私分享的人越来越少。珍惜

东门清心 发表于 2026-2-11 07:46:21

热心回复!

寇秀娟 发表于 2026-2-13 11:24:43

分享、互助 让互联网精神温暖你我
页: [1]
查看完整版本: 【C/C++】5.字节对齐和字节填充