struct {char c; int i;} A[100];
struct {char c[100]; int i[100];} B;
我需要尽量减少使用的内存量。其中哪些使用较少,为什么?
第二个通常使用较少。
由于对齐限制,第一个可能会生成一个8字节的结构,100个副本总共使用800字节;一个字节用于char
,三个字节用于填充,四个用于int
。
第二个不需要填充对齐(char
数组以四字节对齐结束(,只分配100个字节,然后为总共使用的500字节内存分配400个字节。
这假设int
是四个字节,这是迄今为止最常见的情况;根据怪异系统的需要进行调整。