返回首页  设为首页  加入收藏  今天是:
网站首页电脑主板电脑cpu电脑内存电脑硬盘电脑显卡电脑电源显示器电脑配件电脑维修
相关文章
 大话C++之:内存对齐
 深度学习Batch Size玄学被打…
 大宇经典游戏《轩辕剑叁 云和…
 苹果要求开发“无边框”OLED…
 优派发布新款32英寸显示器:…
 TCL华星联合三星电子全球首发…
 联想显示器“618”攻略合集—…
 现购奔驰V级享8万优惠
 跳线是什么意思(跳线是什么…
 案值超1500万!滨州打响全国…
 自己组装电脑要注意什么?
 图像采集卡的常见问题集合
 M2固态搭配移动硬盘盒使用有…
 I7 12700H属于什么级别的处理…
 北京君正:RISC-V CPU条件成…
 曾经的第3大芯片架构终止曾被…
 连线炸裂Cpu干冒烟了!韦德安…
 酷睿I9 12900HX玩游戏够用吗…
 显示器和主机不兼容怎么解决…
 清华同方显示器!!
 和成显示科技打造国产第一液…
 海南清华显示器科技开发有限…
 清华19寸液晶显示器
 i5-13600KF是几纳米的 英特尔…
 13代游戏中高端主板推荐:技…
 最适合中端家用 市售热门中端…
 各类型主板大汇总!满足大家…
 电脑主板基础知识合集(一)
 Intel酷睿处理器电脑装机CPU…
 低端高端全覆盖 性价比极高6…
 i5-13600KF内存频率支持多大…
 双十一游戏电脑的CPU怎么选?…
 CPU行情_太平洋电脑网DIY硬件…
 虚拟内存 百度百科
 都市天际线虚拟内存怎么设置
 到底怎么区别英语单词 virtu…
 电脑虚拟内存指什么
 电脑虚拟内存有什么用
 RTX 4060是独立显卡吗 4060显…
 geforce
 RTX 4060显卡是什么水平档次…
 英伟达黄仁勋:我们正处于AI…
 4060显卡带的动2K吗 玩吃鸡怎…
 电脑电源功率计算器(台式机功…
 台式机功率计算公式 台式机功…
 十线W吗?整机实际功率解析
 台式电脑功耗(台式电脑功耗计…
 台式机功耗计算(台式机的功…
 宏碁推出优跃Air笔记本电脑 …
 干货:如何选择固态硬盘SSD的…
专题栏目
网络
您现在的位置: 电脑评测网 >> 电脑内存 >> 正文
高级搜索
大话C++之:内存对齐
作者:佚名 文章来源:本站原创 点击数: 更新时间:2023/8/7 17:41:45 | 【字体:

  麒王妃在使用sizeof()计算结构体和class大小的时候,往往很多时候计算出来并不是我们想要的结果。最近在使用的时候就特别想了解它内在的原理,搞懂它的本质。

  很多人回答可能是5个字节。分析结构体的组成是:char占1个字,int占4个字节。1+4=5,没错吧?

  既然它不是简单的把成员大小简单累加,想必它肯定是有一套规则,那是什么规则呢?那就是内存对齐

  我的理解是按照一定的规则把它的位置排好,排列得有规有矩,方便计算机读取。

  为了性能。为什么内存对齐为提高性能呢?举个例子,例如把4个字节从地址1写入到寄存器中。首先从前4个字节中读取3个节字,再从后面4个字节中读了1个字,最后放在寄存器中合并在一齐。读取一个数据到寄存器中消耗了这么多步骤,对于CPU性能来说是挺大的负担。如果是字节对齐了,从0开始连续读取4个字,寄存器刚好也是4个字节,只需要一次读写即可,大大提高了读取效率。

  想想我们平时要把物品整理对齐的时候,一般都有参照物或对齐的标准。如果把箱子排好,是一个个紧密对齐排列呢,还是间隔排列呢,这个标准会影响排列后使用的空间。

  对于内存对齐,同样也是有一个参考标准。编译器中提供了#pragma pack(n)来设定变量以n字节对齐方式,n即为对齐的标准。

  拿回箱子排列的例子来说,可能每一个箱子的大小不一样,有些是短一点,有些是长一点,可能排列的位置也有不一样。

  第一个字段char,偏移量(offset)为0,占用空间1个字节,结束位置为1;

  int的大小是4 bytes,字节对齐变量为16 bytes。比较两者间选择小的一个,此时4 bytes作为偏移参考量X。

  从当前偏移量1开始,寻找偏移参考量X最小的倍数位置。4的倍数可以是:4,8,12,16等等,当前最小的为4。然而1,2,3的位置空了,需要填充,从第4个byte开始连续4个byte为int的空间。

  画重点:char型占用空间为1 byte,则其起始位置必须可被1整除。int为4 bytes,其起始位置必须是可以被4整除。

  内存对齐的过程如上,影响同一个结构体的内存布局的关键是:以多少字节来对齐,如上面所说的n。最开始的例子,实际上可以通过设置n为1,可以得到size为5。

电脑内存录入:admin    责任编辑:admin 
  • 上一个电脑内存:

  • 下一个电脑内存: 没有了
  •  
     栏目文章
    普通电脑内存 大话C++之:内存对齐 (08-07)
    普通电脑内存 深度学习Batch Size玄学被打破 (08-07)
    普通电脑内存 大宇经典游戏《轩辕剑叁 云和山的彼端》今日发… (08-07)
    普通电脑内存 虚拟内存 百度百科 (08-06)
    普通电脑内存 都市天际线虚拟内存怎么设置 (08-06)
    普通电脑内存 到底怎么区别英语单词 virtual 的几个意思? (08-06)
    普通电脑内存 电脑虚拟内存指什么 (08-06)
    普通电脑内存 电脑虚拟内存有什么用 (08-06)
    普通电脑内存 一加激进!大规模量产24GB内存手机:遥遥领先… (08-06)
    普通电脑内存 一加Ace2 Pro官宣:普及16G内存 引领24G (08-06)
    普通电脑内存 苹果iPhone14Pro运行内存是多少 苹果有卫星连… (08-06)
    普通电脑内存 一天2元!中国移动云手机开启订购:4核CPU+8G… (08-06)
    普通电脑内存 i5-13600KF属于什么档次的 配多大的内存条? (08-06)
    普通电脑内存 一般一个字符变量在内存中占_____个字节。 (08-05)
    普通电脑内存 中国安防 (08-05)
    普通电脑内存 怡 亚 通(002183):深圳市怡亚通供应链股份有… (08-05)
    普通电脑内存 闪存最新资讯-快科技 (08-05)
    普通电脑内存 占用了英语占用的英文怎么说 (08-05)
    普通电脑内存 酷睿I7 12700H是什么架构 酷睿I7 12700H内存支… (08-04)
    普通电脑内存 什么是电脑内存(电脑内存一般是多少) (08-04)