嵌入式学习笔记(58)C语言的内存操作

news2025/1/13 13:47:02

1.2内存位宽

1.2.1.内存的逻辑抽象图

提到内存,脑中要有一张逻辑图。这张图是一行行大小相等的格子,对于32位内存来说,一行就是4个字节。CPU要访问一个int型数据,则首先取地址,这里的地址指的是int型数据单元的首地址,即4字节中的首字节的地址,然后就可以读取到这4个字节空间中所保存的数据。

1.2.2.内存位宽

从硬件角度:硬件的内存实现本身就是有宽度的,也就是内存条本身就有8位、16位等。需要注意的是,内存芯片之间可以并联,通过并联后8位内存芯片可以做出来16位、32位的硬件内存。

从逻辑角度:内存位宽在逻辑上是任意的,甚至逻辑上内存的位宽可以是24位,但没必要。从逻辑角度,不管内存位宽多少,直接操作即可。但因为所有的逻辑操作都是要硬件实现,所以还是要尊重硬件内存位宽。

1.3 内存编址和寻址、内存对齐

1.3.1.内存编址

在程序运行中,CPU实际只认识内存地址,而不关心这个地址所代表的空间在哪里、怎么分布等这些实体问题,因为硬件设计保证了这个地址就一定能找到这个格子,所以内存单元的2个概念:地址和空间是内存单元的两个方面。

1.3.2.关键:内存编址是以字节为单位的

1.3.3.内存和数据类型的关系

数据类型是用来定义变量的,而这些变量需要在内存中存储和运算。所以数据类型必须和内存相匹配才能获得最好的性能。

在32位系统中,定义变量最好使用32位的int,因为这样效率高。原因是32的数据类型配合32位的内存是可以实现32位CPU最好的性能。当定义8位的char时,CPU访问内存的效率其实是不高的。在很多情况下,我们定义的8位char变量,编译器会帮我们分配32位内存来存储这个char变量,也就是说浪费了24位的内存,但是效率高。

1.3.4.内存对齐

内存的对齐访问不是逻辑问题,是硬件问题。从硬件角度来说,32位的内存它0、1、2、3四个单元本身逻辑上就有相关性,这4个字节组合起来当做一个int,硬件上就是合适的,效率就高。

 嵌入式物联网的学习之路非常漫长,不少人因为学习路线不对或者学习内容不够专业而错失高薪offer。不过别担心,我为大家整理了一份150多G的学习资源,基本上涵盖了嵌入式物联网学习的所有内容。在评论区私信“嵌入式”0元领取学习资源,让你的学习之路更加顺畅!记得点赞、关注、收藏、转发哦!

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

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

相关文章

如何使用Python快速实现文件共享并通过内网穿透技术公网访问?

文章目录 1.前言2.本地文件服务器搭建2.1.Python的安装和设置2.2.cpolar的安装和注册 3.本地文件服务器的发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 数据共享作为和连接作为互联网的基础应用,不仅在商业和办公场景有广泛的应用&#…

OpenWRT通过内网穿透实现安全可靠的ssh远程连接

文章目录 1.安装cpolar内网穿透2.配置SSH远程访问隧道3.公网远程连接4.固定远程连接地址 简单几步实现openWRT结合cpolar内网穿透工具实现远程ssh连接 1.安装cpolar内网穿透 cpolar是一个非常棒的跨平台、内网穿透工具,可以通过安全隧道将NAT或防火墙后面的本地服…

正视AI技术发展利弊,国外高校如何看待文书中使用ChatGPT

ChatGPT是由美国人工智能实验室OpenAI开发的对话AI模型,因极其出色的对话交互和文本生成能力在世界范围内迅速走红,短短5天用户就破了百万。 ChatGPT自2022年11月正式推出以来,已经成为一个热门话题,它可以用于各种各样的事情&am…

c51单片机中不同定义变量的存储位置不同

keil中对不同变量的数据进行存储 上图中是很长看到的一种存储数据变量code,类似这种存储方式还有data,xdata,idata,bdata,这些方式制定了数据的存储位置,方便程序中数据能够更快的处理(对于小数据量当然就没有这方面的考虑)。 传…

校园智慧党建小程序源码系统 带完整的搭建教程

大家好啊,今天来给大家分享一款校园智慧党建小程序源码系统。一起来看看吧。以下是部分功能代码图: 系统特色功能一览: 智能化管理:采用人工智能、大数据、云计算等技术手段,实现自动化、智能化管理。例如&#xff0c…

PVE(Proxmox)8.0的一些问题汇总

目录 前言 杂谈 pve和esxi选啥 直通类 显卡怎么直通 win10显卡报错43 直通后进不去系统或者系统有问题自救 pci类 拔了显卡开机了但是进不去系统 虚拟机类 虚拟机显示问号,而且创建不了新的虚拟机 我想用pve的虚拟机ikuai来连接pve怎么搞 前言 pve折腾了快…

CS 61A Fall 2023 Lecture 1 - Functions [Python] - Notes01, Lab00 and HW01

CS 61A Fall 2023 Lecture 1 - Functions [Python] 文章目录 CS 61A Fall 2023 Lecture 1 - Functions [Python]Note 01lab00HW01 I am gonna make a plan for my future in advance, to consistently refine my coding skills. And this class is what I will try to finish t…

Matlab论文插图绘制模板第121期—图中图

不知不觉,《Matlab论文插图绘制模板》系列教程已经连载更新了120期,而《Matlab进阶绘图》系列也更新了30期,分享了一系列各式各样数据图的标准化绘制模板: 本期分享的内容比较特殊,它可以串联起之前分享的一众数据图&a…

postman发送soap报文示例

一、soap简介 soap是一种基于XML的协议 二、postman发送soap请求 1、发送post请求,url:​​​ https://www.dataaccess.com/webservicesserver/NumberConversion.wso 2、headers设置,添加Content-Type,值为text/xml 添加SOAP…

Java 新手如何使用Spring MVC 中的查询字符串和查询参数

文章目录 什么是查询字符串和查询参数?Spring MVC中的查询参数处理可选参数处理多个值处理查询参数的默认值处理查询字符串示例:创建一个RESTful服务结论 🎉欢迎来到Java学习路线专栏~Java 新手如何使用Spring MVC 中的查询字符串和查询参数 …

06 迪米特法则

官方定义 迪米特法则(LoD:Law of Demeter)又叫最少知识原则(LKP:Least Knowledge Principle ),指的是一个类/模块对其他的类/模块有越少的了解越 好。简言之:talk only to your imm…

MySQL的ACID和并发事务带来的问题简单总结

拓跋阿秀 ACID 原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被恢复(Rollback)到事务…

【知识图谱】KBQA核心架构小结

KBQA是指基于知识图谱的问答系统,是知识图谱的重要应用形式,基于知识图谱的问答和基于LLM的问答殊途同归。 KBQA是一个系统,由多种功能模块组成,其核心架构梳理如下: 下面对各个模块简单小结 文本清洗 只有是文本的…

dashboard报错 错误:无法获取网络列表、dashboard报错 错误:无法获取云主机列表 解决流程

文章目录 错误说明dashboard上报错底层命令报错查看日志message日志httpd报错日志错误日志分析开始解决测试底层命令dashboard错误说明 dashboard上报错 首先,dashboard上无论是管理员还是其他项目,均无法获取云主机和网络信息,具体报错如下

广州虚拟动力携数字人全栈式产品,邀您来2023世界VR产业大会(南昌)一探虚实

2023年10月19-20日,由工业和信息化部、江西省人民政府联合主办,中国电子信息产业发展研究院、江西省工业和信息化厅、南昌市人民政府、虚拟现实产业联盟共同承办的2023世界VR产业大会将在南昌绿地国际博览中心盛大举办。 广州虚拟动力作为3D、AI虚拟人领…

【C++笔记】多态的原理、单继承和多继承关系的虚函数表、 override 和 final、抽象类、重载、覆盖(重写)、隐藏(重定义)的对比

1.final关键字 引出:设计一个不能被继承的类。有如下方法: class A { private:A(int a0):_a(a){} public:static A CreateOBj(int a0){return A(a);} protected:int _a; } //简介限制,子类构成函数无法调用父类构造函数初始化 //子类的构造…

从零开始搭建第一个django项目

目录 配置环境创建 Django 项目和 APP项目组成  ‍子目录文件组成应用文件组成 配置 settings.py启动项目 数据表创建models.pyDjango-models的常用字段和常用配置 Django-admin 引入admin后台和管理员外键views.pyurls.pypostman接口测试 QuerySetInstance功能APIView 的概念…

Mistral AI发布一个拥有 73 亿参数模型Mistral 7B

导读法国人工智能初创公司 Mistral AI 宣布推出其首款大语言模型 Mistral 7B 是一个,号称是迄今为止同规模产品中最强大的语言模型;在 Apache-2.0 许可下开源,可完全免费使用,不受任何限制。 Mistral AI 是一个成立仅六个月的初创…

python实现TCPclient

python实现TCPclient是一件简单的事情,只要通过socket这个模块就可以实现。 一、实现步骤 1、导入模块: 首先,你需要导入Python的socket模块。 import socket2、创建Socket对象: 使用socket.socket()函数创建一个新的socket对…

美国开源数据库ScyllaDB完成4300万美元融资

来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,总部位于美国位于加州桑尼维尔的开源数据库ScyllaDB今日宣布完成4300万美元融资。 本轮融资由风险投资公司Eight Roads Ventures和AB Private Credit Investors领投。其他投资者包括TLV Partners&…