嵌入式C语言中结构体使用详解

各位开发者大家好,今天给大家分享一下,嵌入式C语言中结构体的使用方法。

第一个:内存对齐

内存对齐是指一个数据类型在内存中存放时,对其地址的要求。简单来说内存对齐就是使得其内存地址是该类型大小的整数倍,例如 double 类型的变量,其内存地址需要是8的倍数(double大小为8字节)。

内存对齐的主要目的就是满足部分CPU对内存读写的要求以及优化CPU读取内存的效率。在ARM架构下,如果读取的内存是非对齐的(例如一个4字节的int 落在一个奇数的内存地址上)则会直接抛出异常。

      struct Node{char mark;int size;char flag;};

由于int在本机器上占用4个字节,所以起始地址必须是4的倍数,例如:0x7ffeef361260。所以第一个char类型后面会有3字节的内存空隙。而最后一个char类型后会有3字节空隙的原因则是遵循另一个原则:结构体的大小为对齐系数的整数倍。在Linux平台下,该值通常为4,所以Node的大小必须为4的整数倍,故填充了3字节的空隙。

不过,我们可以通过调整结构体成员变量的定义顺序,来减少内存空隙ÿ

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

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

相关文章

深入理解 Mysql 分层架构:从存储引擎到查询优化器的内部机制解析

一、基础架构 1.连接器 1.会先连接到这个数据库上,这时候接待你的就是连接器。连接器负责跟客户端建立连接、获取权限、维持和管理连接 2.用户密码连接成功之后,会从权限表中拿出你的权限,后续操作权限都依赖于此时拿出的权限,这就意味着当链…

SVM兵王问题

1.流程 前面六个就是棋子的位置,draw就是逼和,后面的数字six就代表,白棋最少用六步就能将死对方。然后呢,可以看一下最后一个有几种情况: 2.交叉测试 leave one out: 留一个样本作测试集,其余…

Django 里的静态资源调用

静态资源:图片,CSS, JavaScript 一共有两种方法 第一种方法 在项目的文件夹里创建名为 static 文件夹 在该文件夹里,添加静态资源 在 settings.py 里添加路径 import os# Static files (CSS, JavaScript, Images) # https://docs.djan…

Oracle Graph 入门 - RDF 知识图谱

Oracle Graph 入门 - RDF 知识图谱 0. 引言1. 查看 RDF Semantic Graph 安装情况2. 创建一个语义网络4. 创建一个模型5. 加载 RDF 文件6. 配置 W3C 标准的 SPARQL 端点 0. 引言 Oracle Graph 的中文资料太少了,只能自己参考英文资料整理一篇吧。 Oracle 数据库包括…

搭建Harbor镜像仓库

前言 1、系统版本:CentOS9 2、harbor版本:v2.9.4 3、提前安装好docker和docker-compose,参考地址。我这里安装的版本是docker:26.1.3 docker-compose:v2.27.1 安装步骤 下载安装包 1、下载地址:ha…

fastadmin 树状菜单展开,合并;简要文件管理系统界面设计与实现

一,菜单合并效果图 源文件参考:fastadmin 子级菜单展开合并、分类父级归纳 - FastAdmin问答社区 php服务端: public function _initialize() {parent::_initialize();$this->model new \app\admin\model\auth\Filetype;$this->admin…

企业如何做好 SQL 质量管理?

研发人员写 SQL 操作数据库想必一定是一类基础且常见的工作内容。如何避免 “问题” SQL 流转到生产环境,保证数据质量?这值得被研发/DBA/运维所重视。 什么是 SQL 问题? 对于研发人员来说,在日常工作中,大部分都需要…

代码随想录算法训练营第三十六天 | 1005.K次取反后最大化的数组和、134.加油站、135.分发糖果

目录 1005.K次取反后最大化的数组和 思路 代码 代码 134.加油站 思路 代码 135.分发糖果 思路 代码 1005.K次取反后最大化的数组和 本题简单一些,估计大家不用想着贪心 ,用自己直觉也会有思路。 代码随想录 思路 直觉,直接写&…

7. C++通过select的方式实现高性能网络服务器

什么是异步IO 异步IO指的是用户程序将IO请求提交后,无需等待IO操作的完成,而是可以继续处理别的事情。 所谓异步IO,是指以事件触发的机制来对IO操作进行处理。 与多进程和多线程技术相比,异步I/O技术的最大优势是系统开销小,系统不必创建进程…

《Ai学习笔记》-模型集成部署

后续大多数模型提升速度和精度: 提升速度: -知识蒸馏,以distillBert和tinyBert为代表 -神经网络优化技巧。prune来剪裁多余的网络节点,混合精度(fp32和fp26混合来降低计算精度从从而实现速度的提升) 提…

【教学类-58-04】黑白三角拼图04(2-10宫格,每个宫格随机1张-6张,带空格纸,1页6张黑白,1张6张白卡)

背景需求: 前期制作了黑白三角拼图2*2、3*3、4*4,确定了基本模板,就可以批量制作更多格子数 【教学类-58-01】黑白三角拼图01(2*2宫格)固定256种随机抽取10张-CSDN博客文章浏览阅读522次,点赞13次&#x…

高中数学:平面向量-题型总结及解题思路梳理

一、知识点及解题思路梳理 高中,2/3的向量题目是坐标向量题,1/3是几何向量题。但是,这1/3的几何向量题可以转换成坐标向量题。 二、练习 例题1 几何型向量题 例题2

【机器学习300问】100、怎么理解卷积神经网络CNN中的池化操作?

一、什么是池化? 卷积神经网络(CNN)中的池化(Pooling)操作是一种下采样技术,其目的是减少数据的空间维度(宽度和高度),同时保持最重要的特征并降低计算复杂度。池化操作不…

若依 Ruoyi-Vue PageHelper 分页失效 total为记录数

分页插件PageHelper返回记录总数total竟然出错了 执行控制台的SQL,查询出来的total数量是对的,很奇怪分页的total设置为查询到的记录数。 怀疑对list.stream操作,影响了分页,代码发现确实是这样,debug,居然…

firewalld 防火墙

firewalld概述 Linux系统防火墙从CentOS7开始的默认防火墙工作在网络层,属于包过滤防火墙 Firewalld和iptables的关系 netfilter 位于Linux内核中的包过滤功能体系称为Linux防火墙的“内核态” firewalld Centos默认的管理防火墙规则的工具称为防火墙的“用…

Gradient-checkpointing的原理

原文: 将更大的网络安装到内存中。|by 雅罗斯拉夫布拉托夫 |张量流 |中等 (medium.com) 前向传播时,隔几层就保留一层activation数据,其余层的activation都释放掉; 反向传播时,从最近的checkpoint去重新跑forward&…

Ps:消失点滤镜 - 测量工具

Ps菜单:滤镜/消失点 Filter/Vanishing Point 快捷键:Ctrl Alt V “消失点”滤镜中的测量工具 Measure Tool用于在透视平面内测量图像中对象的大小,适用于建筑师、设计师、法医和木工等需要精确测量的用户。 快捷键:R ◆ ◆ ◆…

基于springboot+vue的4S店车辆管理系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

CMS Full GC流程以及调优配置

个人博客 CMS Full GC流程以及调优配置 | iwts’s blog CMS CMS 收集器是以实现最短 STW 时间为目标的收集器,所以对于偏业务的后台开发而言,基本上都无脑选CMS了。 多线程收集器,工作在老年代,采用标记清除算法。比较特殊&am…

【QNX】Qnx IPC通信 Message-passing

Qnx IPC通信 Message-passing Message-passing介绍 QNX提供了多种IPC(Interprocess Communication )通信方式,包括Message-passing、Plus(脉冲)、Event、Signal、共享内存、Pipe,当然还有socket。 Message-passing是Qnx IPC的主…