免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: evice
打印 上一主题 下一主题

包含结构的结构的长度问题。 [复制链接]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
21 [报告]
发表于 2004-11-01 16:02 |只看该作者

包含结构的结构的长度问题。

int一般就是和机器相关的。比如16位的机器上,int一般就是2字节,32位的机器上,int一般就是4字节。

所以,为什么要内存对齐,就是为什么int可以提高效率的原因。

论坛徽章:
0
22 [报告]
发表于 2004-11-01 16:51 |只看该作者

包含结构的结构的长度问题。

to :
simtiger   

要学会查资料啊!
这么简单的问题,只要随便用google搜一下就知道了。

有时候不应该只知道学东西,更应该知道如果去学东西。

一个人知道的东西是有限的,但是只要学会了找资料的方法,要学新的东西就会很容易。

论坛徽章:
0
23 [报告]
发表于 2004-11-01 17:05 |只看该作者

包含结构的结构的长度问题。

举个例子来说明吧。
比如说,如果一个数据0x1234是这样分布在地址空间里的(假设系统是小端法存储数据的):

  1.         地址       数据            
  2.        0x000         40
  3.           0x002          23
  4.           0x003          01
复制代码

那么cpu在读取数据0x1234的时候就会非常麻烦,首先在地址0x000读取数据0x40,然后取它的高四位,然后取出0x002的数据23,最后取出0x003的数据01取出它的低四位,可以看出时钟周期花费了更多,而保证数据存储的时候对齐就可以避免这些麻烦。

论坛徽章:
0
24 [报告]
发表于 2004-11-01 23:14 |只看该作者

包含结构的结构的长度问题。

这个属于结构对齐问题。你可以到网上搜索一下相关资料。
避免多出几个字节,可以在定义结构的时候使用
__attribute__((packed))

论坛徽章:
0
25 [报告]
发表于 2004-11-02 10:51 |只看该作者

包含结构的结构的长度问题。

原帖由 "aero" 发表:
int一般就是和机器相关的。比如16位的机器上,int一般就是2字节,32位的机器上,int一般就是4字节。

所以,为什么要内存对齐,就是为什么int可以提高效率的原因。


仔细体会,感觉原因是比较类似,谢谢你的回答

如果说内存对齐,是针对结构而言,这样读取效率更高。不用花更多的时钟周期来读以及拼接。

如果说int,是针对CPU处理变量而言,如果是32位CPU,那么处理数值变量就以32位为单位,这样效率最高。

论坛徽章:
0
26 [报告]
发表于 2004-11-02 10:57 |只看该作者

包含结构的结构的长度问题。

原帖由 "Moonwellatg4" 发表:
to :
simtiger   

要学会查资料啊!
这么简单的问题,只要随便用google搜一下就知道了。

有时候不应该只知道学东西,更应该知道如果去学东西。

一个人知道的东西是有限的,但是只要学会了找资料的方法?.........


谢谢指教,查资料的事情大家都是懂的。
“这么简单的问题”,呵呵,一些问题不能都从表面看。苹果掉在头上了还是只有牛顿发现万有引力定律呢。
google?搜“int 效率 高”,这样搜得出来么?大侠您试过吗?没有调查就没有发言权哦。

开个玩笑~

论坛徽章:
0
27 [报告]
发表于 2004-11-02 10:59 |只看该作者

包含结构的结构的长度问题。

原帖由 "gvim" 发表:


高速缓存的长度,寄存器宽度,数据线宽度,一般都是8的整数倍。现在的体系一般为32位宽。传输一个32位数只需要1个总线周期,高速缓存也只需要一个缓存行,寄存器也可以包含这个32位数据。按照对齐大小不同,扩展?.........


您讲的是对的,不好意思,我理解错您的意思了。谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP