范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

C语言结构体大小你算对了吗

  C 语言中 struct 声明创建一个数据类型(结构体),能将不同类型的对象聚合到一个对象中,用名字来引用结构体的各个组成部分。结构体的所有组成部分都存放在一段连续的内存中。
  如果创建一个结构体,其实际占用的内存空间大小是多少呢?示例代码如下: struct S {   int i;   char c;   int j; };
  要正确计算结构体大小,首先需要了解数据对齐的原理。 数据对齐
  许多计算机系统对基本的数据类型的合法地址做了一些限制。要求某种类型对象的地址必须是某个值(通常为2、4、8)的倍数。这种对齐限制简化了形成处理器和内存系统之间接口的硬件设计。
  对齐原则 :任何占用 K 字节空间大小的基本对象,其地址必须是 K 的倍数。
  那么, char 类型数据存储地址 必须是 1 的倍数。short 类型数据存储的地址为 2 的倍数,以此类推。
  确保每种数据类型都是按照指定方式来组织和分配,即每种类型的数据都满足它的对齐限制,就可以保证实施对齐。
  对于包含结构体的代码,编译器可能需要在字段的分配中插入间隙,以保证每个结构成员都满足它的对齐要求。而结构体本身对它的起始地址也有一些对齐要求。
  由此,编译器可能需要在结构体成员内存的分配中插入间隙,保证每个结构成员都满足它的对齐要求。或者需要在结构体的末尾加入填充,从而使得结构体数组中的每个元素都会满足它的对齐要求。 结构体大小计算
  情形一
  结构体中间插入间隙,上述代码: struct S {   int i;   char c;   int j; };
  如果编译器按照最小 9 字节分配,是不可能满足成员 i 和 j 的 4 字节对齐要求的。此时,编译器会在成员 c 和 j 之间插入一个 3 字节的间隙。结果 j 的偏移量为 8,而整个结构体的大小为 12。
  情形二
  另外一个示例如下,其大小是多少呢? struct S2 {   int i;   int j;   char c; };
  要正确计算这个结构体的大小,需要这样考虑:创建这个结构体的数组,每个数组元素都会满足它的对齐要求。
  如果给这个结构体分配 9 个字节。考虑结构体数组  struct s2 a[4]  ,就不能满足数组 a 的每个元素的对齐要求。假设数组的起始地址为 x,则每个元素的地址分别为 x、x+9、x+18、x+27,有三个元素不满足对齐原则。
  由此,编译器会为结构 s2 分配 12 个字节,最后三个字节是补充的空间(浪费的空间),即 在结构体的末尾增加填充 。
  情形三
  结构体成员是另外一个结构体时,示例如下: struct sta {   int i;   int j;   char c; };  struct stb {   int i;   char c;   int j;   char cc;   struct sta tmp; };
  结构体 srb 的大小是多少呢?
  要计算这种类型的结构体,只需要把其中的结构体成员当成一个整体即可。
  先忽略 成员 tmp,结构体 stb 的大小为 16 字节(中间和末尾均需要填充间隙);结构体 sta 的大小为 12 字节。从而可以计算得出,结构体 stb 的实际大小为 16 + 12 = 28 字节。
  情形四
  使用编译指令,示例代码如下: #pragma pack(1) struct S3 {   int i;   int j;   char c; } #pragma pack()
  注意编译指令  pragma pack  的主要作用就是改变编译器的内存对齐方式。在不使用这条指令的情况下,编译器采取默认方式对齐。
  此处的两条编译预处理指令,使得在这之间定义的结构体按照 1 字节方式对齐。在本例中,使用这两条指令的效果是, 编译器不会在结构体尾部填充空间了 。
  这个结构体的大小为 9 字节。

AKKO大碳复刻225个键帽体验,键帽厂实锤了摩豹刚推出DarmosharkK1那段时间,基本被社区大佬大推特推的开箱文刷屏了,小固用了之后这个键盘什么都好,就是ABS材质键帽手感一般,高强度用了三个月后,决定换一套键帽(其实今年的骁龙870手机你们觉得咋样?你们觉得今年的骁龙870处理器手机咋样,我个人觉得太香了。换之前。我想不到。8系的处理器。媲美上一年旗舰芯片的性能,下放到23千元的价位。今年高通很牛。不管怎样说,消费真肯定希望更小米手机注意了!MIUI12。5增强版来了8月10号,雷军在年度演讲上,不仅发布了不少新品,而且还发布了备受期待的MIUI12。5增强版。据悉,这次增强版新增了原子内存和液态存储等发布会上推出的新功能,还修复和优化了若干个华为跌倒,高通吃饱在全球通信行业,华为与高通分别是中美两国的代表企业。几年前华为与高通共同瓜分了5G标准的制定权,其中高通主导的LDPC方案成为5G数据信道编码标准,而华为主导的Polar方案成为5虽然8K电视跌至千元4K仍然优势明显很多人都好奇,在2019年,8K电视起步价为6位数,现在,几千块就能买上一台,且与4K价格差不多,那么到底买不买?我们看下8K电视有多强大吧。其拥有76804320分辨率。很多人可微影Y9投影仪好吗?看看网友上手后怎么说?最近不知道怎么就对百元投影比较好奇,身边拥有中高端投影仪的朋友也对百元投影仪的市场有兴趣,今天就让我们一起来看看百元投影仪市场里的其中一款投影仪,微影Y9,从不同方面来看看微影Y9Tomcat环境变量如何配置,CMD可直接启动简介相信很多人对Tomcat都不陌生,这是一个免费开源的轻量级Web应用服务器下载由于这是一款开源免费的服务器,因此大家可以直接去官网下载安装包。官网也很好找,百度搜索tomcat选购手机,对应需求,性价比才会最高,你想清楚了吗现代人离不开手机,手机不仅用于打接电话,现在已成了人们与这个世界联接的一个移动终端。大家都在感叹,没有了手机,寸步难移。手机作一个工具,是一个必须品,也会是一个重要的花销,特别对于去验配中心,验配师为什么都会推荐双耳配戴助听器?1听得更清楚双耳佩戴可以消除头影效应,减少头部对高频声音的阻碍,帮助患者更专注的聆听对方讲话。双耳佩戴还有天然的静噪,作用,可以很好的抑制背景噪声,提高信噪比,帮助患者在嘈杂环境下郭台铭的战略眼光。。川老爷子,郭台铭,孙正义还记得几年前,鸿海赴美国威斯康星州的百亿美元投资案吗?现在预估投资缩减到不到7亿美元,这个当初被认为有违经济效益的投资在川普下台三个月后被打回原形。真是风里OPPOA16s发布6。5英寸HD屏,后置三摄,约1135元IT之家8月14日消息近日OPPO在荷兰推出了一款全新的中端智能手机OPPOA16s,这款新手机是已经推出的OPPOA16的升级版,新增支持NFC。OPPOA16s提供的一些关键功
区块链技术分享初步应用2区块链技术分享起源1简单分享了比特币的起源。既然比特币可以脱离物理介质,仅通过互联网就可以流通,那么比特币到底存在哪?比特币是怎么交易的?区块链到底是什么?今天这篇文章将一一进行解新基建提了三年,谈起区块链你竟然只知道比特币今天跟大家分享新基建与区块链。01区块链有多受重视党的十九大以来,中共中央政治局已进行19次集体学习,其中三次与数字经济相关,主题分别是大数据人工智能和区块链,区块链的地位被提的最酷睿i912900KROGZ690EXTREME首测重返战力之巅文章开头不妨先说结论1Corei912900K提升非常大,部分场景对比10900K提升能超过502Corei512600K性能已经与10900K持平,甚至略优3最高功耗是给时刻保持区块链技术之哈希指针hello,大家好,我们第三期的区块链技术分享来啦,那么话不多说,我们开始吧。提起区块链,大家可能都会提到不可篡改。但是为什么区块链不可篡改呢?先给出答案,这与区块链的数据结构哈希12代酷睿正式发布Corei912900K拉满5。2GHz,DDR5PCIe5。0齐发就在今天,英特尔正式发布第12代酷睿系列处理器,首发非锁频CPU包括酷睿i912900KKF酷睿i712700KKF酷睿i512600KKF。对于12代酷睿,英特尔做了数个总结,可为什么有的网址开头是https,有的却是http?hello,大家好,我们第二期的区块链技术分享来啦,本期是candy分享公钥加密,也就是非对称加密。提到加解密,密码学这些词汇,很多人都退避三舍,如临大敌,觉得晦涩难懂,自己不想懂区块链复盘及规划hello,大家好,好久不见分享区块链有一段时间了,也有近两周没有更新了。确实遇到了点小瓶颈,因为越研究越发现区块链涉及的技术领域很广,很多东西想讲清楚非一时之功,所以自己也有些困英特尔AI顾问穿越星际守护宇航员健康近日,英特尔人工智能(AI)顾问与前沿开发实验室(FDL)的研究人员进行了一项关乎宇航员健康的具有里程碑意义的研究,以便更好地了解辐射暴露对宇航员的生理影响。利用英特尔的人工智能技区块链技术分享起源1现下区块链大火,聊到相关话题,我们常常的反应年轻人怎么可能轻易认输呢?所以,我们打算写一系列文章揭开区块链的神秘面纱。提到区块链,常常会谈到一个高频词比特币。说到比特币,有个神秘的12代酷睿战斗力顶梁柱ROGMAXIMUSZ690EXTREME登场在性能尚未解禁之前,玩家们对新一代酷睿的战斗力所有猜测,有许多是来自于ROGMAXIMUS平台运行时的曝光。无疑作为主板选择中的金字塔级产品,ROGMAXIMUS几乎坐稳了不可动摇英特尔加速高性能计算技术创新以XPU架构引领E级计算时代2021CCF全国高性能计算学术年会(HPCChina2021)于今日正式拉开帷幕。此次会议期间,英特尔及其合作伙伴就如何通过高性能计算应对当今世界的重大挑战展开探讨,并展现了英特