[{"content":"A Simple Guide to Understanding Memory Alignment\nStructure (struct) alignment Rule 1: A member\u0026rsquo;s address is a multiple of min(its alignment value, the effective alignment value).\nRule 2: The total size of a structure is an integer multiple of its largest member alignment value.\nRule 3: Member order affects the final size.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #pragma pack(1)//设置默认对齐数为1 struct S1 { char c1; int i; char c2; }; #pragma pack()//取消设置的默认对齐数，还原为默认 int main() { //输出的结果是什么？ printf(\u0026#34;%d\\n\u0026#34;, sizeof(struct S1)); return 0; } 1 2 3 4 5 6 7 #pragma pack(push, 1)//设置默认对齐数为1 struct MyStruct { char a; int b; double c; }; #pragma pack(pop)//取消设置的默认对齐数，还原为默认 1 2 3 4 5 struct MyStruct { char a; int b; double c; } __attribute__((packed)); ","date":"2025-06-26T15:35:46+08:00","permalink":"https://NomadJoeviolet.github.io/en/p/c-cpp-memory-alignment-quick-guide/","title":"C\u0026C++ Memory Alignment (Quick Guide)"}]