您的位置:首页 > 编程语言 > C语言/C++

计算机组成原理——C语言中的边界对齐问题

2019-05-29 21:07 218 查看

边界对齐

例如一个存储字长为32位的机器,现来详述一下依次存入一个int,short,double,char,short类型的数据的过程。假定int ,short,double ,char分别为4,2,8,1字节。那么它们分别占据字、半字、双字、字节。
字地址:4的倍数
半字地址:2的倍数
双字地址:8的倍数
字节地址:任意
那么第一个int就正好占据一个字,第一行就全是int.
short是半字,地址要是2的倍数,随意要占据第二行的前两格。
double是双字,地址要是8的倍数,第三行第一个正好是8,所以占据3,4两行。
char是字节,任意,所以占据double后面的一个格子就行了,这里正好是第五行的第一格。
short是半字,地址要是2的倍数,而char后面的那个地址是17,所以short的首地址不可以正好在char后面,要空一格,从18开始的两个格子。
边界对齐后插入数的位置如图所示:

边界对齐是以空间换时间的。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: