结构体的大小:
-
计算结构体大小的原则:内存对齐
-
为什么结构体的大小要遵循内存对齐的原则:
经过内存对齐后,CPU的内存访问速度大大提升,比如如果cpu一次读取内存为4个字节,如果从0地址开始就一次读取就够了,如果你从1地址开始,那么要读2次。所以对齐后,cpu读取内存效率提高。 -
内存对齐:结构体成员存放的地址要能整除结构成员内存的大小。
-
具体实现:
1.前面所有成员的大小相加应该是当前成员大小的倍数
2.整个结构体的大小应该能是该结构体中单个最大成员大小的倍数 -
图解:
-
计算结构体大小的例题:
struct A
{
char a;//1+1
short b;//2
int c;//4
}; // 该结构体大小为 8 bytes
struct B
{
int a;//4
char b;//1+1
short c;//2
};// 该结构体大小为 8 bytes
struct C
{
int a;//4+4
doubl