概述:C++布局体的`sizeof`不总是即是每个成员的`sizeof`之和,因为对齐和填充影响了内存布局。未对齐的布局体可能存在间隙,而对齐的布局领会插入填充以保持对齐。通过示例展示告终构体的内存对齐和填充,以及如何利用模板元编程打印布局体成员的偏移量,深入明白内存布局。
在C++中,布局体的sizeof并不总是即是每个成员的sizeof之和,这是由于对齐和填充的影响。编译器为了提高内存访问速度,通常会在布局体成员之间插入一些填充字节以对齐数据。
底子功能:
示例源代码:
[code]#include // 未举行对齐的布局体struct WithoutPadding { char a; // 1 字节 int b; // 4 字节 char c; // 1 字节};// 举行对齐的布局体struct WithPadding { char a; // 1 字节 char padding[3]; // 对齐填充 3 字节 int b; // 4 字节 char c; // 1 字节};int main() { std::cout |