用空间换取效率
假如一种情况:
struct A
{
char a;
int b;
};
A结构体占用内存是1+4==5吗? no,答案是8.
为什么呢?
32位寄存器CPU一次能拿四个字节去运算,所以CPU在看到a变量的时候,会直接一口气把他和他后面的三个字节一并拿走,而不是只拿一个字节。如果内存创建完a变量后,马上在下一个地址就创建b变量,CPU想知道b的大小,就要运算两次。一次拿到b变量的三个字节,然后再计算下一次拿到b变量的最后一个字节。
这样的方式,CPU需要计算两次,并且还要连接起上一次的三个字节,效率就会降低。为了增加效率,就不惜代价浪费内存,来提高效率。