富文本编辑器目录测试加bug测试

富文本编辑器目录测试加bug测试 幸福人生 2023-08-18 10:13:33 1580


目录

一  什么是字节对齐

二  对齐的原因和作用

三  对齐的分类和准则

3.1 结构体对齐

3.1.1 简单示例


易百纳社区

一  什么是字节对齐

    现代计算机中,内存空间按照字节划分,理论上可以从任何起始地址访问任意类型的变量。但实际中在访问特定类型变量时经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序一个接一个地存放,这就是对齐。

二  对齐的原因和作用

    不同硬件平台对存储空间的处理上存在很大的不同。某些平台对特定类型的数据只能从特定地址开始存取,而不允许其在内存中任意存放。例如Motorola 68000 处理器不允许16位的字存放在奇地址,否则会触发异常,因此在这种架构下编程必须保证字节对齐。

    但最常见的情况是,如果不按照平台要求对数据存放进行对齐,会带来存取效率上的损失。比如32位的Intel处理器通过总线访问(包括读和写)内存数据。每个总线周期从偶地址开始访问32位内存数据,内存数据以字节为单位存放。如果一个32位的数据没有存放在4字节整除的内存地址处,那么处理器就需要2个总线周期对其进行访问,显然访问效率下降很多。

    因此,通过合理的内存对齐可以提高访问效率。为使CPU能够对数据进行快速访问,数据的起始地址应具有“对齐”特性。比如4字节数据的起始地址应位于4字节边界上,即起始地址能够被4整除。

    此外,合理利用字节对齐还可以有效地节省存储空间。但要注意,在32位机中使用1字节或2字节对齐,反而会降低变量访问速度。因此需要考虑处理器类型。还应考虑编译器的类型。在VC/C++和GNU GCC中都是默认是4字节对齐。

 

三  对齐的分类和准则

    主要基于Intel X86架构介绍结构体对齐和栈内存对齐,位域本质上为结构体类型。

    对于Intel X86平台,每次分配内存应该是从4的整数倍地址开始分配,无论是对结构体变量还是简单类型的变量。

3.1 结构体对齐

    在C语言中,结构体是种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如数组、结构体、联合等)的数据单元。编译器为结构体的每个成员按照其自然边界(alignment)分配空间。各成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。

    字节对齐的问题主要就是针对结构体。

3.1.1 简单示例

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 1 1 评论 打赏
评论
12个
内容存在敏感词
手气红包
  • 悄悄瞧瞧乔 2023-11-02 15:04:43
    5.00元
    回复
    测试专栏红包 移动端
  • 悄悄瞧瞧乔 2023-11-02 14:12:24
    回复
    测试专栏红包 移动端
  • 悄悄瞧瞧乔 2023-09-01 14:45:30
    5.00元
    回复
    fdfdfdfdfdfdfd
  • 悄悄瞧瞧乔 2023-09-01 14:42:42
    回复
    测试评论红包
  • 悄悄瞧瞧乔 2023-09-01 14:15:22
    回复
    测试评论红包
  • 2023-08-31 18:48:43
    5.00元
    回复
    测试评论红包 3
  • 2023-08-31 17:38:46
    10.00元
    回复
    测试评论红包 2
  • 悄悄瞧瞧乔 2023-08-31 16:18:47
    5.00元
    回复
    测试评论红包
  • 2023-08-31 16:10:30
    5.00元
    回复
    测试评论红包
  • 悄悄瞧瞧乔 2023-08-31 16:05:32
    回复
    测试评论红包
  • 悄悄瞧瞧乔 2023-08-30 11:40:03
    回复
    测试评论红包
  • 幸福人生 2023-08-23 10:38:54
    回复
    又又又不能评论
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
幸福人生
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
¥0.1易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区