STM32中栈、堆、全局区、常量区、代码区、RAM、ROM的分析

这篇具有很好参考价值的文章主要介绍了STM32中栈、堆、全局区、常量区、代码区、RAM、ROM的分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

STM32中栈、堆、全局区、常量区、代码区、RAM、ROM的分析

1、堆、栈区:

STM32中堆栈是为了存储不同信息而开辟的空间,具体对应于启动文件中的head和stack所定义的内存空间。
STM32中,堆向高地址增长,栈向低地址增长。

堆:是用户调用malloc时申请的内存空间。
栈:临时创建的局部变量(一般的局部变量+const修饰的局部变量),函数入口参数,函数返回值存放在栈区。

2、全局区(静态区)

全局区有.bss、.data段组成,可读可写
①.bss段:未初始化的全局变量、初始化为0的全局变量、初始化为0的静态变量存放在.bss段。
②.data段:已经初始化的全局变量存放在.data段,静态变量存放在.data段,const定义的全局变量存放在.rodata段。

3、常量区

①字符串存放在常量区
②常量区的内容不可修改

4、代码区

程序执行的代码,存放在代码区。

那么这些个区和实际的内存之间什么关系呢?

我们知道,一般选择STM32会考虑其RAM、ROM(即FLASH),RAM的特点是掉电丢失数据,仅在上电运行时存储数据。ROM的特点是掉电不丢失数据,一般用来存储代码和常量区数据。
至此我们可知:堆、栈、全局区(.bss段、.data段)都是存放在RAM中,而代码区和常量区的内容编译后存放在RAM中。
即:
RAM :堆 + 栈 + 全局区(.bss段、.data段))
ROM:代码区+常量区

我们在KEIL编译框下面,可以看到,Code、RO-data、RW-data、ZI-data四个部分,分别代表:代码占用空间、只读常量占用空间、已初始化的可读可写的变量占用空间、未初始化的可读可写变量。
此时:
RAM = RW-data + ZI-data
ROM = Code + RO-data + RW-data文章来源地址https://www.toymoban.com/news/detail-653650.html

到了这里,关于STM32中栈、堆、全局区、常量区、代码区、RAM、ROM的分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 程序分区:全局区、常量区、栈区、堆区、代码区

      可以看出栈的地址是从高地址到地址的。

    2024年02月09日
    浏览(26)
  • RAM和ROM

    1、RAM ​RAM又称为随机访问存储器(Random-Access Memory),其主要分为静态和动态两种。静态的RAM简写为SRAM,动态的RAM简写为DRAM。SRAM的访问速度比DRAM要快得多,因此价格也要贵得多,在应用上,SRAM主要用作高速缓存存储器,也就是CPU和主存之间的L1、L2高速缓存,DRAM一般作为计算

    2024年02月08日
    浏览(29)
  • RAM与ROM的区别

    I.MX6U-ALPHA 开发板上带有一个 256MB/512MB 的 DDR3 内存芯片,一般 Cortex-A 芯 片自带的 RAM 很小,比如 I.MX6U 只有 128KB 的 OCRAM 。如果要运行 Linux 的话完全不够 用的,所以必须要外接一片 RAM 芯片。 对于 Cortex-A 系列芯片而言, uboot,Linux内核 等是在 DDR 上运行的。 例如之前所有的裸

    2024年02月06日
    浏览(33)
  • Unity获取Android手机的RAM和剩余RAM和ROM

    项目工作需要,在游戏APP运行时,获取当前手机的剩余运行内存RAM和ROM。并且要适用于不同的项目,思来想去。最终想到这样的办法,具体的获取的方法在Android工程中实现,然后生成aar ,在Unity中调用。 用AndroidStudio创建一个新项目。创建一个com.pub.mylibrary包名。然后创建一

    2024年02月16日
    浏览(24)
  • 内存RAM和ROM之间的区别

    ROM和RAM都是一种存储技术,只是两者原理不同,RAM为随机存储,掉电不会保存数据,而ROM可以在掉电的情况下,依然保存原有的数据。ROM和RAM指的都是半导体存储器。本来的含义是:ROM是Read Only Memory的意思,也就是说这种存储器只能读,不能写。而RAM是Random Access Memory的缩写

    2023年04月08日
    浏览(27)
  • 【C语言】-- 一篇带你了解C语言内存五大区——栈区,堆区,全局区,常量区,代码区

    目录 1 C语言的内存分区 1.1 内存五大分区 1.2 内存分区简介 1.2.1 栈区(stack) 1.2.2 堆区(heap) 1.2.3 (全局)静态区 1.2.4 常量区 1.2.5 代码区 创作不易,如果本篇博客对您有一定的帮助,大家记得留言+点赞哦。 C语言已经持续学习一段时间了,今天特此总结一下关于C语言内存的五大区

    2024年02月16日
    浏览(34)
  • 简语RAM、ROM、flash、eMMC(通俗易懂)

    先来看RAM与ROM RAM: Random-Access Memory的缩写,意思为“随机存取存储器” ROM:Read-Only Memory的缩写,意思为“只读存储器” 总体来看:都是存储器 最大区别:ROM可以在停止供电的时候仍然保存着数据;RAM在停止供电的时候数据丢失 RAM分两大类:         第一类 称为静态

    2023年04月21日
    浏览(27)
  • 【物联网】ROM、RAM和FLASH的区别

    在计算机领域,我们经常听到ROM、FLASH和RAM这些术语,它们是计算机中不同类型的存储器。虽然它们都用于存储数据,但它们之间有着明显的区别。本文将详细介绍ROM、FLASH和RAM的区别,并给出具体的例子和解释。 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣

    2024年02月08日
    浏览(23)
  • Verilog RAM/ROM的数据初始化

    FPGA设计中RAM和ROM作为存储器用来存储可变或不可变类型的数据。 ROM初始化一般是加载固定数据,RAM声明时默认为不定态数据,初始化时可以让数据为全1或者全0。 复位时按地址写入初值 使用initial 和 for循环来初始化 用于初始化为有规律的数据, RAM初始化常使用这种方式。

    2024年02月04日
    浏览(31)
  • 固态硬盘、机械硬盘、RAM、ROM的区别和联系

    很多人都知道RAM与ROM的区别和固态硬盘与机械硬盘的区别,但可能还是会有人问:机械硬盘和固态硬盘分别属于RAM还是ROM?所以,本篇文章就来解释一下这四者的关系。 要搞清楚这四者的关系,得先了解存储介质的类型。存储介质有半导体、磁性物和光盘等类型,这里主要说

    2024年02月12日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包