织梦网站专题模板门户网站开发模板

diannao/2026/1/19 9:26:48/文章来源:
织梦网站专题模板,门户网站开发模板,数字广东网络建设有限公司天眼查,谷歌推广目录 1、 结构体的内存对齐 1.1、对齐规则 1.2、练习1、练习2#xff08;演示对齐规则1、2、3、4#xff09; 2、为什么存在内存对齐 2.1、平台原因#xff08;移植原因#xff09; 2.2、性能原因 2.3、那么如何即满足对齐#xff0c;又要节省空间呢#xff1f; … 目录 1、 结构体的内存对齐 1.1、对齐规则 1.2、练习1、练习2演示对齐规则1、2、3、4 2、为什么存在内存对齐 2.1、平台原因移植原因 2.2、性能原因 2.3、那么如何即满足对齐又要节省空间呢 3、修改默认对齐数 4、结构体传参 4.1、将结构体传到函数print中 4.2、将地址传到函数print中 4.3、区别 5、结构体实现位段 5.1、什么是位段 5.2、位段的内存分配 5.3、注意事项 6、谢谢观看 上一篇博客写了结构体变量的创建、初始化和声明等内容今天的这篇博客来带大家深入理解结构体的知识点。希望大家多多支持。  正文  1、 结构体的内存对齐 首先抛一个问题结构体的大小如何计算 要知道这个题的答案首先要了解结构体内存对齐。 1.1、对齐规则 1、结构体的第一个成员对齐到和结构体变量起始位置偏移量为0的地址处 2、其他成员变量要对齐到某一个数字对齐数的整数倍的地址处 3、结构体总大小为最大对齐数的整数倍 4、如果嵌套了结构体嵌套的结构体成员对齐到自己的成员中最大对齐数的整数倍处结构体的整体大小就是所有最大对齐数中的最大值的整数倍 偏移量字节与结构体变量开始存放位置之间相偏移的值 对齐数编译器默认的一个对齐数与该成员变量大小相比  二者之中取。较小值         VS中默认的一个对齐数是  8        Linux中gcc 没有默认对齐数对齐数就是成员自身的大小 最大对齐数结构体中每个成员变量都有一个对齐数所有对齐数中最大的数 1.2、练习1、练习2演示对齐规则1、2、3、4 求结构体的大小 练习1、 演示对齐规则1、2 、3 找对齐数  对齐数 编译器默认的一个对齐数与该成员变量大小 相比 二者之中取较小值。 c1  的对齐数是 1 i  的对齐数是4 c2  的对齐数是1 对齐规则1 结构体的第一个成员对齐到和结构体变量起始位置偏移量为0的地址处 如下图第一个成员变量c1 放在偏移量为0的位置 对齐规则2其他成员变量要对齐到其对齐数的整数倍的地址处 成员  i  的对齐数是 4i 从偏移量为4的倍数的位置开始存放按本题即从偏移量为4的位置开始向后存放4个字节。  成员  c2  的对齐数是 1 c2  从偏移量为1的倍数的位置开始存放按本题即从偏移量为8的位置开始向后存放1个字节。 对齐规则3 结构体总大小为最大对齐数的整数倍 结构体中三个成员的对齐数分别为  1、4、1则最大对齐数是 4 那么结构体总大小为 4 的整数倍 由上图三个成员已经占了9个字节的空间所以不能少于4的2倍为8 则结构体总大小为  4*312,  4的3倍 练习2、 演示对齐规则4 对齐规则4 如果嵌套了结构体嵌套的结构体成员对齐到自己的成员中最大对齐数的整数倍处结构体的整体大小就是所有最大对齐数中的最大值的整数倍 对于 struct S2   内嵌结构体其结构体总大小为2*816 内嵌结构体的最大对齐数是  8  内嵌结构体的最大对齐数是  8 则在结构体S3中该结构体的对齐数为8 大小为16 由上图该结构体的大小为  4*832  2、为什么存在内存对齐 2.1、平台原因移植原因 不是所有的硬件平台都能访问任意地址上的任意数据的某些硬件平台只能在某些地址处取某些特定类型的数据否则抛出硬件异常。 举例说明有些平台上结构体成员中 int类型的数据只能存在4的倍数的内存中此时就需要有内存对齐。 2.2、性能原因 数据结构特别是栈应该尽可能的在自然边界上对齐。原因为了访问未对齐的内存 处理器需要做两次内存访问而对齐的内存访问只需要一次。 例如 在32为平台下一次访问4个字节成员i  在对齐的情况下能被一次读完。 不对齐的情况下按顺序存放 所以说内存对齐损耗了空间但节省了时间结构体的内存对齐是拿空间来换取时间的做法。  2.3、那么如何即满足对齐又要节省空间呢 请看下面的例子两个结构体中只是更改了成员的顺序 struct S1中 两个占空间小的char 类型的成员分散排列。 而 struct S2中 两个占空间小的char 类型的成员集中在一起排列。  所以要即满足对齐又要节省空间的方法是让占用空间小的成员尽量集中在一起。 3、修改默认对齐数 使用 #pragma 这个预处理命令可以修改编译器的默认对齐数。 具体使用  设置默认对齐数为1相当于不对齐的情况所占字节是所有成员的字节大小。 结构体在对齐方式不合适的时候我们可以自己更改默认对齐数。  4、结构体传参 结构体传参可以传结构体也可以传地址。但我们首选传地址。 4.1、将结构体传到函数print中 4.2、将地址传到函数print中 4.3、区别 传结构体在传结构体时需要创建临时结构体来储存如果结构体中有成员占内存过大会在传递时产生时间和空间的巨大开销。 正经解释 函数传参的时候参数需要压栈会有时间和空间上的系统开销。 如果传递一个结构体对象的时候结构体过大参数压栈的系统开销较大所以会导致性能下降。  故结构体传参的时候要传结构体的地址。  5、结构体实现位段 结构体具有实现位段的能力。 5.1、什么是位段 位段成员必须是int、unsigned int或 signed int在C99中位段成员类型也可以选择其他类型。  基本形式位段成员名后面有一个冒号和一个数字。数字代表该成员所占的bit位数。 这里的A就是位段类型。 5.2、位段的内存分配 位段的空间上是按照以4个字节或1个字节的方式来开辟的。位段涉及很多的不确定因素是不能跨平台的。  详细开辟方式如结构体。 5.3、注意事项 不能对位段的成员使用操作符这样就不能使用scanf直接给位段的成员输入值只能是先输入放在一个变量中然后赋值给位段成员。 如下 6、谢谢观看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/90392.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站要怎么建立网页制作流程图片

我一直试图通过将包含我目录名称的log.i字符串值添加到数组中,然后使用数组适配器通过listView打印它们,来在listView中的目录中打印项目.但是,当我尝试运行该应用程序时,它将打印包含目录名称的日志,但不会在listView上打印任何内容.有什么帮助吗?这是我的代码&…

不忘初心网站建设网站设计方案谁写

1.前言 在9.0的系统产品定制化开发中,在进行一些定制开发中,对于一些app需要通过属性来控制禁止安装,比如adb install也不允许安装,所以就需要 熟悉adb install的安装流程,然后来禁用adb install安装功能,接下来分析下adb 下的安装流程 2.禁用adb install 安装app功能的…

网站开发qq头像做类似3d溜溜的网站

今天写uni-app的项目 设置uni-app扩展组件的样式 使用穿透/deep/ 发现小程序没有效果 h5有效果 //小程序无效 h5生效 /deep/ .uni-list-item .uni-list-item__container .uni-list-item__content .uni-list-item__content-title{color: #333333;font-size: 32upx;}加入一下代…

做优化网站能以量取胜么网站建设的流程视频

在我们以往和企业的沟通过程中,我们发现还是有相当多的一部分企业对于商业智能 BI 了解不多,或者对商业智能 BI 的理解仅停留在花花绿绿的可视化页面上,要么就是提出以下类似问题: 财务部门:BI 的财务分析指标也就是三…

手机网站开发成appwordpress怎么获取在线ip

您可以从项目中创建debian包.据我所知,你想创建一个用于分发的包,所以我建议你从你的项目中创建一个debian包.Here是Debian Packaging系统的介绍.在文章中,他们在某些时候描述了如何创建一个“规则”文件,它是构建过程的核心.以下是我通常用于Qt / KDE项目的示例:#!…

免费自助建站网站一览自助建网站网站关键词先后

安装下载地址:https://dev.mysql.com/downloads/mysql/​dev.mysql.com双击.msi文件开始安装,采用Custom安装方式。配置安装完毕弹出配置,或者安装路径下bin文件夹下MySQLInstanceConfig.exe运行可以进行配置。采用Detailed Configuration-》…

网站建设花费网站宣传的方式

之前做过电商网站倒计时的效果,今天在倒计时的基础上,把代码修改了一下,改为计时器效果,实现了以下功能: 1.点击“开始”后,按秒计时且“开始”文字变为“停止”; 2.点击“停止”,计…

做家具的网站有哪些建设企业学习网站

前端下载文件有哪些方式 在前端,最常见和最常用的文件下载方式是: 使用 标签的 download 属性: 创建一个 标签,并设置其 href 属性为文件的 URL,然后使用 download 属性指定下载的文件名。 这种方式简单直接&…

知乎 上海做网站的公司手机笑话网站源码

文章目录 一、Web应用,架构搭建二、web应用环境架构类三、web应用安全漏洞分类总结 一、Web应用,架构搭建 #网站搭建前置知识 域名,子域名,dns,http/https,证书等 二、web应用环境架构类 理解不同web应用组成角色功能架构 开发…

企业电子商务网站建设问题上海网站建站建设

最近在学习MySQL优化方面的知识。本文就数据类型和schema方面的优化进行介绍。1. 选择优化的数据类型MySQL支持的数据类型有很多,而如何选择出正确的数据类型,对于性能是至关重要的。以下几个原则能够帮助确定数据类型:更小的通常更好应尽可能…

宁波网站搭建定制非模板网站建设响应式网站工具

文章目录1、简单查询2、去除单列的重复结果查询3、去除多列的重复结果查询4、限制查询结果条数5、对查询结果排序(1)按照单个列的值进行排序(2)按照多个列的值进行排序6、带搜索条件查询(1)简单搜索条件查询…

外国网站手机dns学会网站建设三方协议

今天发现spring的异常格式没有跟着mvc的错误格式走,场景是用户权限的时候。查了一下原来是springsecurity定义了一组filter作用在了mvc上层,因此需要处理一下错误格式。 处理前错误返回信息如下: 由于使用了多语言,因此错误格式也…

建设信用卡申请进度查询官方网站phpcms wordpress

serialVersionUID简要介绍serialVersionUID是在Java序列化、反序列化对象时起作用的一个字段。Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进…

视频网站logo怎么做深圳外贸公司集中在哪

背景 最近在学习操作系统,需要从零开始搭建系统,由于教程中给的虚拟机搭建的方式感觉还是过于重量级,因此研究了一下通过 qemu 模拟器,配合 grub 完成启动系统的搭建。 qemu 介绍 qemu 是一款十分优秀的系统模拟器,…

响应式网站用什么单位南通专业网站建设公司

错误和异常 至此,本教程还未深入介绍错误信息,但如果您尝试过本教程前文中的例子,应该已经看到过一些错误信息。错误可(至少)被分为两种:语法错误 和 异常。 8.1. 语法错误 语法错误又称解析错误&#x…

网站开发学院长春中医药大学

什么是computed属性 computed 属性用于声明计算属性,这些属性的值是基于其他响应式属性计算而来的,当依赖的响应式属性发生变化时,计算属性会自动重新计算。 与Vue.js 2相比,Vue.js 3的 computed 属性语法稍有变化,不…

青岛建设集团招聘信息网站做家纺的网站

由于这个数据库服务器存放的数据库比较多且都是小数据库,所以最初的时候是运行在windows服务器上的。前一段时间由于机房服务器要做调整,于是我便在一个夜深人静的夜晚对数据库进行的迁移及前台应用程序进行了调整,调整结束后测试应用均可以正…

济南的网站建设外贸在哪些网站做

邮件协议: SMTP、POP3、IMAP SMTP 协议全称为 Simple Mail Transfer Protocol,译作简单邮件传输协议,它定义了邮件客户端软件与 SMTP 服务器之间,以及 SMTP 服务器与 SMTP 服务器之间的通信规则。 用户先将邮件投递到腾讯的 SMT…

如何用ps做网站图标wordpress 漏洞修复

go之树型结构深度理解补充 在上一篇中借用了 Ilija Eftimov 文章来讲解了tree的定义和一些方法。这篇文章主要是讲解在树型结构中如何判断节点与节点之间的关系。 A节点是否是B节点的直接上级A节点是否是B节点的可跳跃的上级(即中间隔开几个节点的间接上级)上一篇文章连接 g…

网站建设了流程企业展厅设计风格

pwngdb 中 b *$rebase(0x相对基址偏移) 是什么意思 pwngdb 是一个针对二进制漏洞利用的调试工具库,用于在 GDB 调试器中辅助进行漏洞开发和漏洞利用的调试。b *$rebase(0x相对基址偏移) 是 pwngdb 中的一个调试命令,用于在基地址重定位后设置断点。 在二…