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

STM32裸机开发不需要堆

今天又在加深对ram和rom的了解。
根据前几天的代码试验我发现,我虽然在启动文件中给堆分配了一定的空间,但是我好像从来没使用过,不管是全局变量、静态变量、局部变量,只是存放在.data,.bss,stack这几个区域中,那我一开始分配的heap和?不是白分配了吗,总感觉有点亏。
然后就查询了一下,发现如果想使用堆,就必须要使用malloc这个函数,让它为你找一块连续的空间,然后返回给你一个空间地址的指针,你就可以用这个指针来访问堆了。但是使用堆会遇到一些问题,因为C语言中没有对堆进行管理,对于堆的开发是不够的,
malloc也只是在找到你需要的那么大的连续空间之后才返回给你一个地址,如果找不到呢?就这样说,一开始的时候,堆空间是一大片连续的区域,可以随便用,但是越用越少,越用越区块化,越零散,即便每次用了之后都用free将堆空间归还,但是依旧变成
了一大片零零散散的空地,而C语言中想使用这些空地,只有malloc这一个途径,但是它又是只能寻找连续的满足你需求大小的空间,这就会产生矛盾了。说到这里我想起了电脑是怎么使用内存的,电脑都有一块虚拟内存,虚拟内存都是连续的,每一个应用程序
用的都是一块完整连续的虚拟内存,然后虚拟内存是经过一个什么管理来着的,通过它映射到实际上的物理内存,这样就可以使用零散的空间了,极大提高了空间的利用率(虽然感觉可能会比直接使用物理内存耗时),这样的话,你的电脑连续开机好几个月都
可以,不会因为内存不够而卡顿,会死机吗?总之就是stm32的堆没有这么个管理器,想要使用堆也只有malloc这一个途径,随着时间的推移,堆的零散就带来了系统的不稳定(比如你某段程序想要申请一块堆内存,但是始终找不到合适的,程序要么在这里卡死,
要么影响到后续的操作)。所以说,裸机开发STM32,千万不要使用堆内存,毕竟一块板子扔外面可是要跑好几年的,使用稳定的内存才能稳定。
还有就是为什么在中断里不能使用malloc?因为假设while里也正在执行malloc,中断一来,就执行新的malloc了,而旧的malloc是不能返回去继续执行的(AI语录),我觉得这是最根本的原因了。

http://www.jsqmd.com/news/602150/

相关文章:

  • OpenClaw+千问3.5-9B开发助手:自动排查日志错误与执行测试
  • 告别性能焦虑:5个被忽略的华硕设备优化神器隐藏功能
  • 幻兽帕鲁存档迁移救星:5分钟解决服务器切换导致的角色丢失问题
  • Ubuntu 安装 PyCINRAD(cinrad)踩坑记录
  • 微信聊天记录永久保存:你的数字记忆守护者
  • 如何用Vue2快速构建企业级后台系统:Vue-admin全功能框架详解
  • 分析PET发泡片材设备品牌的客户忠诚度,说说哪些品牌更靠谱 - mypinpai
  • WindowsCleaner:当C盘爆红警报响起,你的系统救星来了
  • 基于RK3576J的识别方案,如何实现100%追溯零差错
  • ok-ww:用智能自动化重构鸣潮游戏体验
  • 从正则表达式到算符优先:手把手教你用C语言写语法分析器
  • Python实战:天干地支与五行阴阳的自动化转换工具
  • Windows 11系统优化:基于Win11Debloat的深度性能调优与隐私保护方案
  • 告别手动造数据!用JMeter JSR223预处理程序+Groovy脚本,5分钟搞定接口签名和AES加密
  • 高效极简专业:LazyVim开源工具的个性化配置与效率提升指南
  • 图像质量评价新思路:CLIP如何理解‘好看’与‘不好看’(含实验对比)
  • 3大维度解析PeaZip:这款开源压缩神器如何重构你的文件管理体验
  • 我有3张1000元的京东e卡,想1天内变现,哪个平台回收快? - 京顺回收
  • C++类与对象(2)—构造函数析构函数
  • 批量链接管理:3秒处理100个链接的开源效率工具
  • Cursor Pro激活完全指南:三步解锁无限AI编程能力的实用技巧
  • 还在为黑苹果配置发愁?试试这个智能EFI生成工具,四步搞定复杂设置
  • 打破窗口尺寸限制:SRWE让你的应用程序随心所欲变换大小 [特殊字符]
  • ai辅助can网络设计:让快马平台智能生成dbc定义与通信代码
  • 国家中小学智慧教育平台电子课本下载工具:一键获取教材PDF的终极解决方案
  • 终极指南:如何快速构建ARM TrustZone可信执行环境
  • 揭开跨国婚恋的幻象:中国女性远嫁非洲悲剧背后的深层叩问
  • 3步搞定智能字幕下载:GetSubtitles让观影体验再升级
  • 零基础入门AI智能体开发:在快马平台亲手打造天气查询skill
  • 揭秘真实世界电动汽车电池性能:20辆车29个月充电数据分析完整指南 [特殊字符]⚡