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

结构体易忘点

结构体初始化

当我们去初始化一个结构体的时候,我们常常会按变量顺序初始化,但其实也可以不按顺序,同时也可以部分数据初始化。

结构体对齐

结构体里面的成员有一定的对齐规则,他不是每一个空间都存着有效数据的,有些空间是被浪费的,并且不能被访问。

原因:

1.我们不是所有的硬件都能访问到任意位置的数据的。

2.提高效率,对齐后的数据只需要访问一次,未对齐的数据要访问两次(32bit位的电脑一次只能访问4个字节,有些数据就会被两次分开访问)。

这是一直空间换时间的做法。

对齐规则如下

(1)第一个结构体成员放在偏移量为0处。

(2)从第二个成员开始,以后每个成员要对齐到成员对齐数的整数倍偏移位处。

成员对齐数:成员自身大小与默认对齐数的较小值,vs默认对齐数8,gcc无默认对齐数。

(3)对齐后的整体所占字节数要为所有成员中对齐数最大的整数倍。

(4)当存在嵌套结构体的情况,在放置结构体时,结构体的对齐数是所有成员变量(包含嵌套结构体的成员变量)的所占字节数最大值的整数倍。

具体的栗子如下:


http://www.mrgr.cn/news/30634.html

相关文章:

  • Redhat7.9 安装 KingbaseES 金仓数据库 V9单机版(静默安装)
  • 并发编程(10)——内存模型和原子操作
  • Android setContentView执行流程(一)-生成DecorView
  • 低代码、配置式web组态软件
  • Elasticsearch中什么是倒排索引?
  • 「 审稿答复 」如何写Response评论回复的“第一句”
  • solidwork剪裁实体
  • Ubuntu22.04关闭631端口的方法
  • 【CSS Tricks】一种基于AV1视频格式的现代图像格式-AVIF
  • PyCharm和VS Code 安装通义灵码,可本地安装包安装,解决插件安装不上问题
  • Linux内核结构
  • Python语法(一)——顺序、条件和循环语句
  • 【macOS】【zsh报错】zsh: command not found: python
  • InternVL 微调实践闯关任务
  • vue3常用的组件间通信
  • python AutoGen接入开源模型xLAM-7b-fc-r,测试function calling的功能
  • springsecurity+jwt实现前后端分离认证授权
  • WPF入门教学六 Grid布局进阶
  • Hive基本原理与数据开发
  • 【隐私计算篇】利用多方安全计算MPC实现VGG16人脸识别隐私计算模型
  • pytorch学习笔记一:作用、安装和基本使用方法、自动求导机制、自制线性回归模型、常见tensor格式、hub模块介绍
  • Python中,你可以使用`scipy.stats`库中的`entropy`函数来计算两个连续变量之间的KL散度
  • 打不开Qtcreator(This application fail to start...........)
  • 速盾:高防cdn效果怎么看出来?
  • 24岁大专—程序员历险记;
  • FlexNet Licensing: not running 问题