c语言如何算字节,C语言中结构字节的计算方法

2023-11-16

47d4ab55643cbf4bc1415e90118de0e9.png

在讨论计算方法之前,我们先讨论一些概念,一个是偏移量,另一个是内存对齐. 让我来谈谈偏移量,百度百科将其定义为: 存储单元的实际地址与其所在的段的段地址之间的距离称为段内偏移量,也称为“有效地址”或抵消. ”在结构中,它可能是指结构变量中成员地址与结构变量地址之间的差异. 然后谈谈内存对齐的概念: 当在内存中存储基本类型的数据时,计算机系统将对其位置有所限制. 系统将要求这些数据的第一个地址的值是某个数字的倍数,该数字称为数据类型的对齐模数. 尽管ANSI C标准没有强制要求相邻声明的变量在内存中应该相邻,但是编译器会自动帮助您解决此问题,即,相邻变量之间可能会填充一些字节. 因此,在此问题上,编译器有所不同.

因此,我们首先来讨论结构变量在Microsoft编译器中的对齐方式

1. 如果结构成员的第一个地址是其最宽的基本类型成员的整数倍. 当编译器为结构分配内存时,它首先找到最宽的基本成员,然后在内存中查找地址,并使用此最宽的基本数据类型的大小作为对齐模量

2. 结构中每个成员相对于第一个地址的偏移量是成员大小的整数倍. 如果不满足此要求,则编译器将自动添加字节. 当为结构成员打开内存时计算结构体大小,编译器将首先检查已开发内存的第一地址与结构变量的第一地址之间的偏移量. 如果它是成员体的整数倍,则存储此变量,否则将在该成员和上一个成员之间填充字节以实现整数倍

3. 如果结构占用的总内存大小是最大成员主体大小的整数倍ÿ

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c语言如何算字节,C语言中结构字节的计算方法 的相关文章

  • hadoop和spark读取GBK编码乱码

    转自 http www cnblogs com teagnes p 6112019 html 首先来看一下为什么会出现这个问题 下面是一个最简单的spark的wordcount程序 sc textFile filePath 方法从文本文件创
  • u8系统怎么连接服务器,u8服务器和客户端怎么连接服务器

    u8服务器和客户端怎么连接服务器 内容精选 换一换 Linux云服务器一般采用SSH连接方式 使用密钥对进行安全地无密码访问 但是SSH连接一般都是字符界面 有时我们需要使用图形界面进行一些复杂操作 本文以Ubuntu 18 04操作系统为
  • 【华为OD机试真题 Java】英文句子倒序

    前言 本专栏将持续更新华为OD机试题目 并进行详细的分析与解答 包含完整的代码实现 希望可以帮助到正在努力的你 关于OD机试流程 面经 面试指导等 如有任何疑问 欢迎联系我 wechat steven moda email nansun09
  • 解决谷歌浏览器在F12情况下自动断点问题Paused in debugger

    解决谷歌浏览器在F12情况下自动断点问题 Paused in debugger 最近在使用谷歌浏览器在调试js脚本的时候 每次按F12 再刷新页面 都会跳出如上图所示的图标 自动进入断点调试 如果不想让它自动断点可以按一下3步去设置 1 打
  • 什么是对象存储OSS,看完你就懂了

    伴随着业务的发展 企业经营规模的扩张 存储需求量不断增加 这时候就需要一种方法让数据处理起来更简单 另外支持扩展性 便于访问信息 对象存储就是图片 音频 视频等非结构化数据的数据池 相对于主机服务器 具有读写速度快 有利于分享的特点 那么
  • Docker-Compose.yml详解

    说在前面 本文是基于version 3 build 在构建时应用的配置选项 build 可以指定为包含构建上下文路径的字符串 version 3 7 services webapp build dir 或者 作为具有在context下指定的
  • Leetcode刷题-312 :戳气球

    刷题记录 1 题目介绍 2 题目分析 2 1 穷举不可行 2 2 区间层次的动态规划 3 题目解答 1 题目介绍 有 n 个气球 编号为0 到 n 1 每个气球上都标有一个数字 这些数字存在数组 nums 中 现在要求你戳破所有的气球 戳破
  • 以太坊构建本地私有网络

    以太坊网络 以太网网络的实时的统计数据信息可以在EthStats net https ethstats net 上查看 这网站上包含了许多重要的数据 如当前区块 交易 gas价格等 这页面上展示的节点只是实际网络中的节点的一部分 任何人都可
  • 数据挖掘 第一天(Jupyter-Notebook的使用)

    Jupyter Notebook 下载Jupyter matplotlib pip install jupyter i https pypi tuna tsinghua edu cn simple pip install matplotli
  • RxJava 2: 用Retrofit2架构Android MVVM 生命周期

    原文 https medium com manuelvicnt rxjava2 android mvvm lifecycle app structure with retrofit 2 cf903849f49e elz8jqnoi 一年多前
  • Ubuntu下安装cmake的步骤

    1 查看当前cmake的版本 cmake version 如果没有安装就会报错 2 下载cmake安装包 先建一个文件夹 cd到该文件夹下 下载 wget https cmake org files v3 9 cmake 3 9 2 tar
  • 修改UE4缓存路径,免得太多占用c盘空间

    UE4系列文章目录 文章目录 UE4系列文章目录 前言 一 修改默认缓存路径 打开Epic Games 自定义缓存位置 前言 在安装好了UE4之后 UE4引擎会默认生成缓存路径 C Users ASUS AppData Local Unre
  • mysql删除用户的命令_mysql如何删除用户?

    mysql删除用户的方法 1 使用 drop user 用户名 命令删除 2 使用 delete from user where user 用户名 and host localhost 命令删除 其中localhost为主机名 mysql删
  • cumulative sum

    def cumulative sum L retL sum 0 for e in L sum e retL append sum return retL L 1 2 3 print cumulative sum L
  • linux 浏览器无法搜索引擎,无法在Linux上使用jxbrowser创建新的浏览器

    我有一个使用jxbrowser在Mac上工作的小型测试程序 我试图在Fedora安装上运行测试程序 并且我没有得到一个Browser对象的实例 无法在Linux上使用jxbrowser创建新的浏览器 这里是程序的记录 有没有人知道什么可能导
  • 手机基站数据转经纬度

    http www anttna com cell2gps index php
  • 激活上下文无效:解决当前执行线程中不活动的错误

    激活上下文无效 解决当前执行线程中不活动的错误 在编程中 经常会遇到激活上下文无效的错误 这个错误通常出现在多线程编程或异步编程中 它表示当前执行线程所需的激活上下文不是活动的 本文将详细介绍这个错误的原因 并提供一些解决方法 错误原因 激
  • 2022保研经验贴:华南理工大学计算机科学与工程学院 、东南大学计算机科学与工程学院等

    个人基本情况 本科学校背景 NUAA rank 6 120 前五学期 5 121 前六学期 英语 四级 578 六级 502 荣誉称号 国奖 校级三好学生 2 校级优秀学生干部 科创 项目 一个校级的很水的项目 竞赛经历 无 个人倾向 地区
  • MySQL索引优化

    一文详解MySQL各种锁及MVCC的使用场景及原理 MySQL慢查询优化 Mysql日期格式转化问题 索引优化方法 前缀索引优化 覆盖索引优化 主键索引自增 索引NOT NULL 防止索引失效 前缀索引优化 前缀索引 根据某个字段中字符串的

随机推荐