c语言地址和地址怎么比较大小,C语言地址对齐(转)-计算网络编程的结构大小...

i_3_3691943704x337553723_15.jpg

现代计算机中的内存空间按字节划分. 从理论上讲,访问任何类型的变量似乎都可以从任何地址开始,但是实际情况是,访问特定变量时,通常是在特定的内存地址访问,这要求将各种类型的数据安排在其中. 按照某些规则排列空间,而不是一个接一个地排列.

为什么要地址对齐?

对齐的作用和原因: 每个硬件平台处理存储空间的方式都非常不同. 某些平台只能从某些地址访问某些类型的数据. 其他平台可能没有这些限制,但最常见的是,如果数据存储未根据平台的要求进行对齐,则会导致访问效率下降. 例如,某些平台每次都从偶数地址开始. 如果将int类型(假定为32位)存储在偶数地址的开头,则可以在一个时钟周期内读取它. 并且,如果将其存储在奇数地址的开头,则可能需要2个时钟周期,并且两次读取结果的高字节和低字节会拼凑在一起以获得int类型数据. 显然,读取效率下降很多. 这也是时空的游戏.

对齐的实现

通常,当我们编写程序时,我们不需要考虑对齐问题. 编译器将为我们选择适合目标平台的对齐策略. 当然,我们也可以通知编译器传递预编译的指令,以更改指定数据的对齐方式.

但是,这是因为我们通常不需要关心这个问题,并且因为编译器已经对齐了数据. 但是,如果我们不了解它,我们常常会对某些问题感到困惑. 最常见的是该结构的sizeof()结果,这是意外的. 为此,我们需要了解对齐算法.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值