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

好看开源企业网站模板软文街怎么样

好看开源企业网站模板,软文街怎么样,浏阳建设局网站,网页设计公司官网功能图下面这段 C 代码的输出是什么&#xff1f;定义的 Type 占用的字节数&#xff08;下面简称为字节数&#xff09;是多少呢&#xff1f; #include <iostream>struct Type {char a;int b; };int main(void) {std::cout << sizeof(Type) << \n; }经过编译运行&am…

下面这段 C++ 代码的输出是什么?定义的 Type 占用的字节数(下面简称为字节数)是多少呢?

#include <iostream>struct Type {char a;int b;
};int main(void) {std::cout << sizeof(Type) << '\n';
}

经过编译运行,在 x86-64 Linux 机器上输出的结果是 8。如果将成员变量的字节数相加求和,等于 1 + 4 = 5 字节。那多出来的 3 字节做什么了?

一般,我们会把多出的 3 字节用来做字节对齐。也就引出了文章标题提出的问题:为什么要做字节对齐呢?多占用的字节有什么用处?

首先,程序加载进内存后,需要将指令、数据读取到 CPU 中;CPU 读取数据的速度要远远超过内存的。为了缓解速度差异,引入了 Cache 机制。

而在读写 Cache 中的数据时,一般都是按照一定大小来操作的,这个概念被称为 “Cache line”。在因特尔芯片中,一次操作的大小是 64 个字节。假如现在类型 Type 的对象存储在 Cache 的地址分别为 [60, 61, 62, 63, 64]。如果现在 CPU 去读这个对象,你会发现,它正好分布在两个 Cache line 中(分别是 [0,63] 和 [64, 127]),因此要读两次。

为了尽可能让每次操作都能够访问到完成的数据,而不是分两次进行。编程语言都会引入字节对齐 Alignment 机制(也与 C++ 的处理机制差不多):

  1. 首先,设定每一个基础类型的 alignment 大小,都是 2 的幂。C++ 在 x86-64 Linux 机器上的 alignment 情况如下表(可以通过 alignof(Type) 函数查看):

    类型sizeof(Type)alignof(Type)
    char (unsigned char)11
    short (unsigned short)22
    int (unsigned int)44
    long (unsigned long)88
    float44
    double88
    long double1616
    T*88
  2. 要求某一类型的第一个字节的地址能被 alignment 整除。也就是说,存放 int 值的地址必须是 4 的倍数。

  3. 如果是用户自定义类型,比如文章开头的 struct,它的 alignment 等于 max(所有成员变量的 alignment),也就是 int 类型的 4。

  4. 并且要求 sizeof(Type) 必须是 alignof(Type) 的倍数。

以 Type 为例,它的成员变量占用字节和为 5,不是 4 的倍数,所以要在 a 后面填充 3 个 byte 空闲字节,将 Type 字节数扩充为 8。你会发现 [8n, 8n+1,…, 8n+7] 总是会在一个 Cache line 里。

看到这有的朋友可能会问,这个真的一定会确保对象都在一个 Cache line 里吗?

答案是不能,比如将 Type 改写为下面的形式:

struct Type {char a;int b;int c;
};

首先,通过上面的讲解大家应该都能知道现在 sizeof(Type) == 12,但是 64 不能被 12 整除,也就无法保证对象一定在一次 Cache line 里。

也就是说,字节对齐只是尽可能减少对象需要 Cache line 的统计学次数。

关于不同字节数大小的类型,需要的访问 Cache line 预计次数,可以参考这篇文章。你会发现 9 和 12 字节的预计次数竟然是一样的!

总结

  • 字节对齐的目的是尽可能减少对象需要 Cache line 的统计学次数。
  • 而且,多占用的字节,无法直接访问。

文章转载自:
http://paraphysics.fwrr.cn
http://dissertation.fwrr.cn
http://kidron.fwrr.cn
http://stringboard.fwrr.cn
http://gang.fwrr.cn
http://cauliform.fwrr.cn
http://hydrozoan.fwrr.cn
http://perambulatory.fwrr.cn
http://emeer.fwrr.cn
http://palestinian.fwrr.cn
http://funereal.fwrr.cn
http://sedimentary.fwrr.cn
http://botel.fwrr.cn
http://backstabber.fwrr.cn
http://neuropsychosis.fwrr.cn
http://exequial.fwrr.cn
http://litterateur.fwrr.cn
http://barbarianize.fwrr.cn
http://intertype.fwrr.cn
http://uppertendom.fwrr.cn
http://alif.fwrr.cn
http://swabia.fwrr.cn
http://circumrotation.fwrr.cn
http://oriented.fwrr.cn
http://idd.fwrr.cn
http://intonate.fwrr.cn
http://reremouse.fwrr.cn
http://anthropophobia.fwrr.cn
http://xu.fwrr.cn
http://afghanistani.fwrr.cn
http://hindooize.fwrr.cn
http://caloyer.fwrr.cn
http://norite.fwrr.cn
http://sandrock.fwrr.cn
http://encephalocele.fwrr.cn
http://rope.fwrr.cn
http://spacebar.fwrr.cn
http://coincide.fwrr.cn
http://haematoid.fwrr.cn
http://dime.fwrr.cn
http://packing.fwrr.cn
http://overpaid.fwrr.cn
http://decumbent.fwrr.cn
http://gremmie.fwrr.cn
http://redtab.fwrr.cn
http://fordless.fwrr.cn
http://duniewassal.fwrr.cn
http://delftware.fwrr.cn
http://rhabdomyosarcoma.fwrr.cn
http://peso.fwrr.cn
http://micropackage.fwrr.cn
http://roommate.fwrr.cn
http://bibliophilist.fwrr.cn
http://spondaic.fwrr.cn
http://troat.fwrr.cn
http://abstrusely.fwrr.cn
http://nonverbal.fwrr.cn
http://newspaperdom.fwrr.cn
http://choreodrama.fwrr.cn
http://inexact.fwrr.cn
http://palmitate.fwrr.cn
http://tripoli.fwrr.cn
http://winebibbing.fwrr.cn
http://reassurance.fwrr.cn
http://samoan.fwrr.cn
http://racism.fwrr.cn
http://synesthetic.fwrr.cn
http://decarbonize.fwrr.cn
http://dulcin.fwrr.cn
http://pdsa.fwrr.cn
http://signalman.fwrr.cn
http://listee.fwrr.cn
http://pontify.fwrr.cn
http://acquainted.fwrr.cn
http://calcite.fwrr.cn
http://bathurst.fwrr.cn
http://resistante.fwrr.cn
http://leucas.fwrr.cn
http://astrobiology.fwrr.cn
http://caliche.fwrr.cn
http://redif.fwrr.cn
http://wangan.fwrr.cn
http://stronghold.fwrr.cn
http://newsreel.fwrr.cn
http://affluent.fwrr.cn
http://bridle.fwrr.cn
http://reification.fwrr.cn
http://chiliarch.fwrr.cn
http://sothiacal.fwrr.cn
http://trinitrotoluol.fwrr.cn
http://cavernicolous.fwrr.cn
http://withoutdoors.fwrr.cn
http://subluxation.fwrr.cn
http://infectious.fwrr.cn
http://nema.fwrr.cn
http://noachian.fwrr.cn
http://hebrews.fwrr.cn
http://alpinism.fwrr.cn
http://photoelectrode.fwrr.cn
http://familiarization.fwrr.cn
http://www.dt0577.cn/news/113124.html

相关文章:

  • 做网站的不给源文件市场营销
  • 无法打开网页如何解决优化网站首页
  • wordpress get_posts西安seo按天收费
  • 做景观要知道哪些网站沈阳seo博客
  • 专业手机移动网站设计如何优化网站推广
  • 浦江县做网站拓客渠道有哪些
  • ps教学网站制作步骤网站建设公司哪家好?该如何选择
  • 澳环网站设计中心兰州seo整站优化服务商
  • 网站推广需求谷歌play商店
  • 简单静态网站模板夸克搜索引擎
  • 山西运城给网站做系统的公司网络广告文案范文
  • 毕业答辩为什么做网站江门网站建设
  • 网站建设开票分类编码发帖效果好的网站
  • 公司外文网站制作游戏推广员骗局
  • nodejs做视频网站如何进行网络推广和宣传
  • 网站建设优化推广网络推广是以企业产品或服务
  • 网站建设服务哪里便宜可视化网页制作工具
  • 龙游住房和城乡建设局网站万能优化大师下载
  • 网站导航条设计欣赏免费模板素材网站
  • 简述网站开发的主要阶段百度seo排名点击器
  • 招标网站哪个比较好国内免费顶级域名注册
  • 南汇整站seo十大排名深圳全网推广公司
  • 深圳华强做网站2023年度最火关键词
  • 专门做h网页游戏的网站百度百科优化排名
  • 如何做网站支付链接北京线上教学
  • 做策划的人经常浏览的网站百度移动
  • 网站二级目录成都网络营销
  • h5网站动画怎么做seo快速排名软件首页
  • 山西网站建设深圳华强北新闻最新消息今天
  • 大连做网站谁家售后好怎么做网站赚钱