
C++笔记之内存对齐、结构体对齐code review!文章目录C++笔记之内存对齐、结构体对齐1.内存对齐与结构体内存对齐2.四个关键词3.内存对齐3.1 核心原理:为什么需要内存对齐?3.1.1 硬件限制与性能(最主要原因)3.1.2 平台移植性3.2 内存对齐的三个核心规则3.3 经典对比示例3.3.1 糟糕的布局(浪费空间)3.3.2 优化的布局(节省空间)3.4 如何手动控制对齐?4. 补充与辨析:内存对齐 vs 结构体内存对齐4.1 核心区别表4.2 为什么说它们不能完全画等号?4.3 拓展:非结构体的内存对齐场景1.内存对齐与结构体内存对齐内存对齐(Memory Alignment):是计算机为了配合硬件读取特性、提高数据访问效率,而要求数据的起始内存地址必须是其自身大小(或特定数值)整数倍的底层机制。结构体内存对齐(Struct Memory Alignment):是编译器为了实现内存对齐,在结构体成员之间或末尾自动填充空闲字节(Padding),从而调整各成员相对位置和结构体总大小的布局规则。2.四个关键词1.起始内存地址必须是其自身大小(或特定数值)整数倍 2.自动填充空闲字节 3.最大的那个成员的倍数 4.提高数据访问效率一句话描述:“为了提高数据访问效率,编译器会根据‘起始地址是自身大小整数倍’的规则自动填充空闲字节,并确保结构体总大小是最大成员的倍数。”3.内存对齐内存对齐(Memory Alignment)是计算机在内存中排列数据的一种机制。简单来说,就是要求数据的起始地址必须是某个数字(通常是 2、4、8 等)的倍数。虽然从逻辑上看,内存就像一个连续的字节数组,CPU 可以访问任意位置,但现代计算机的底层硬件并不是这样工作的。