内存对齐

mac2026-02-01  2

一,内存对齐的概念: 是编译器的“管辖范围”。 二,内存对齐的条件: 1,结构体成员存放的地址要能满足整除该成员本身大小。 eg:

struct A { char a;//1个字节+3个字节 int b;//4个字节 }//8个字节

2,前面所有成员的大小相加应该是当前成员大小的倍数。 eg:

struct B { int a;//4个字节 char b;//1个字节+1个字节 short c;//2个字节 }//8个字节

3,整个结构体的大小应该是单个最大成员的倍数。 eg:

struct C { char a;//1个字节+3个字节 int b;//4个字节 short c;//2个字节 }//12个字节(4+4+2+2)

三,内存对齐的某些特殊情况 结构体内有结构体

struct D { char a;//1个字节+3个字节 struct DD { int b;//4个字节 long c;//4个字节 }d;//8个字节 };//12个字节 struct E { char a;//1 struct EE { int b; long c; };//0个(没有定义变量) };//1个字节
最新回复(0)