C语言——结构体的大小

mac2025-08-15  4

结构体的大小:

计算结构体大小的原则:内存对齐

为什么结构体的大小要遵循内存对齐的原则: 经过内存对齐后,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 double b;//8 float *c;//4 };//该结构体大小为 24 bytes

struct D { int a;//4 float *b;//4 double c;//8 };//该结构体大小为 16 bytes

struct E { char a;//1+3 struct EE { int b; long c; }d;//8 };//该结构体大小为 12 bytes

struct F { char a;//1 struct FF { int b; long c; };//没有定义变量 } //该结构体大小为 1 bytes

struct G { char a;//1+1 short b[4];//8 int c;//4 };//该结构体大小为 16 bytes

结语: 定义结构体时,应将内存大数据类型放后面,小的放前面,这样会使得结构体的大小变得最小。
最新回复(0)