CPU如何访问一个4字节的整数?
CPU将在地址总线发出4个连续的字节的地址。因为CPU的运行速度很快,内存的运行速度相对较慢,所以CPU几乎同时把4个连续的字节的地址发给了内存条,内存条的厂商为了匹配CPU的运行速度,需要把内存条做到并行,所以内存条被设计为以上图示所以的内存存储矩阵,在同一个水平轴的内存单元可以在同一个存取周期内进行存取。所以4字节的整数就需要对齐到4的整数倍的地址上,这样CPU的内存访问效率才更高,所以C语言编译器都尽量将结构体和变量的地址与变量的大小进行对齐,除非用packed进行指定。
一个典型的结构体默认编译的存储方式如下:
需要注意的是,其中内存块2单元4,内存块3单元4,内存块4单元4,都被分给了struct student。