当前位置: 首页 > news >正文

营销型网站与普通网站的区别网站怎么做音乐外链

营销型网站与普通网站的区别,网站怎么做音乐外链,商城建站,久久建筑网 023dir数据对齐: 许多计算机系统对基本数据类型合法地址做出了一些限制#xff0c;要求某种类型对象的地址必须是某个值K(通常是2#xff0c;4或8)的倍数。这种对齐限制简化了形成处理器和存储器系统之间的接口的硬件设计。例如#xff0c;假设一个处理器总是从存储器中取出8个字节…数据对齐: 许多计算机系统对基本数据类型合法地址做出了一些限制要求某种类型对象的地址必须是 某个值K(通常是24或8)的倍数。这种对齐限制简化了形成处理器和存储器系统之间的接口的硬件 设计。例如假设一个处理器总是从存储器中取出8个字节则地址必须为8的倍数。如果我们能保 证将所有的double类型数据的地址对齐成8的倍数那么就可以用一个存储器操作来读或者写值了。 否则我们可能需要执行两次存储器访问因为对象可能被分放在两个8字节存储块中。 当数据类型为结构体时编译器可能需要在结构体字段的分配中插入间隙以保证每个结构元素都          满足它的对齐要求。而结构本身对它的地址也有一些对齐要求此时可能需要在结构末尾填充一些          空间以满足结构体整体的对齐----向结构体元素中最大的元素对齐。稍后会用代码说明!!!                  Linux和Microsoft Windows的对齐方式有何不同:                一.Linux的对齐策略: 在Linux中2字节数据类型(例如short)的地址必须是2的倍数而较大的数据类型(例如intint * float和double)的地址必须是4的倍数。也就是说Linux下要么2字节对齐要么4字节对齐没 有其他格式的对齐。               二.Microsoft Windows的对齐策略: 在Windows中对齐要求更严--任何K字节基本对象的地址都必须是K的倍数K24或者8. 特别地double或者long long类型数据的地址应该是8的倍数。可以看出Windows的对齐策略和 Linux还是不同的。稍后用代码说明!!!  接下来用代码和图文说明两者的对齐方式(不同的对齐方式产生的结构体大小不同): 测试代码如下: / // filename:DataAlignment / #includestdio.h typedef struct { char c; int i[2]; double v; }S; int main() { printf(size of S %d\n, sizeof(S)); return 0; }   程序中定义了一个结构体在没有任何数据对齐时内存布局如下: 一.在红帽Linux i686上编译编译后结构S的布局如下:                  由于要保证结构体每个元素都要数据对齐因此必须在c和i[0]之间插入3字节的间隙(图中阴影部分为编译器插入的间隙) 使得i[0]和后面的元素的的偏移量都为4的倍数这样最终S结构大小为20字节。 运行程序结果为:  size of S 20             二.在Microsoft Windows 上编译后S的内存布局如下: 在windows下int类型4个字节因此int类型要向4字节对齐double类型8字节因此要向8字节对齐。因此在 c和i[0]之间插入3字节的间隙(图中阴影部分)使得i[0]的偏移量为4的倍数同时在i[1]和v之间插入4字节的间隙 使得v的偏移量为8的倍数。这样最终S结构的大小为24字节。 运行程序结果为:  size of S 24           从以上对比可以看出Linux下和windows下的对齐策略是不同的这就导致在两个平台下结构体的大小不同。                      现在考虑如下代码:                #includestdio.h typedef struct { int i; int j; char c; }S1; int main() { printf(size of S1 %d\n, sizeof(S1)); return 0; }   可能很多人认为编译后运行结果为9以为结构体的每个元素都满足各自的对齐要求。其实不然别忘了还有要考虑 结构体整体的对齐。假如有如下声明: S1  d[4]; 如果这样分配9个字节不可能满足d的每个元素的对齐要求因为这些元素的地址分别为xdxd9xd18 xd27。这样只有第一个元素满足4字节对齐的要求而其他的元素的地址都不是4的倍数。 因此编译器会在结构体的末尾填充3字节满足结构体整体的对齐要求填充后的内存布局如下: 这样一来d的元素的地址分别为xdxd12xd24xd36满足4字节的整数倍这样最终S1的大小 为12字节而不是9字节. 总结:通过代码的对比可以看出Linx和Windwos的数据对齐有所差异这就导致 在一些情况下两者平台结构体类型大小的不同。通过以上示例分析我们可以很简单的 计算出在任何平台下结构体的大小。读者可以找相关的练习题继续练习下验证结果 的正确性。相信仔细阅读本文应该能搞定所有类似的问题!!! 原文地址http://blog.csdn.net/qianghaohao/article/details/51011418
http://www.sadfv.cn/news/115956/

相关文章:

  • 网站教程设计网站建站策划
  • 怎么做网站广告联盟全网网站推广
  • 美妆网站怎么做唐山门户网站建设
  • 在网站上怎么做招聘信息企业网站设计苏州
  • 苏州企业网站外链工具xg
  • 国内营销策划公司seo谷歌外贸推广
  • 游戏设计师网站有哪些网站开发语言有哪些
  • 建设校园标准信息服务网站论文推广线上渠道
  • 网站建设公司 深圳wordpress专题页面
  • 重庆企业服务建站网站开发建设网站时seo标题
  • 上海婚纱网站设计如何制作网站新手教程
  • 广告公司可以开网站建设费吗php网站开发和js
  • 工程建设标准下载网站为古汉字老人做网站
  • 做带支付平台的网站常用的h5制作工具有哪些
  • 游戏网站模商城网站布局
  • php不用框架怎么做网站wordpress媒体库格式
  • 杭州网站建设机构2021网络营销成功案例
  • 网站的设计流程有哪些步骤wordpress支持php7
  • 无极网络qq关键词排名优化
  • 各大网站官网的导航栏怎么做网站运营一般做那些分析
  • 怎么做公众号小程序广东搜索引擎优化
  • 设计类专业学什么南通做网站优化
  • 成都wap网站建设网站项目策划书内容模板
  • 高端企业网站建设好的公司wordpress 半天打不开
  • 广东东远建设工程管理有限公司网站佛山南海区建网站的公司
  • 自驾游网站建设方案小程序定制开发app
  • 网站建设所需要的内容山东网站建设app
  • 刷题网站开发三合一网站建设用途
  • 网站优化检查“一个”网站
  • 无锡建设工程项目代码申请网站湖南建筑信息平台