首页 > 系统相关 >嵌入式中内存分配-栈区、堆区、全局区、常量区和代码区详解

嵌入式中内存分配-栈区、堆区、全局区、常量区和代码区详解

时间:2024-03-30 15:31:16浏览次数:23  
标签:栈区 自由性 堆区 嵌入式 存放 内存 size

一、C语言内存分区

C语言内存分区示意图如下:

图片

1. 栈区

栈区介绍

  • 栈区由编译器自动分配释放,由操作系统自动管理,无须手动管理。

  • 栈区上的内容只在函数范围内存在,当函数运行结束,这些内容也会自动被销毁。

  • 栈区按内存地址由高到低方向生长,其最大大小由编译时确定,速度快,但自由性差,最大空间不大。

  • 栈区是先进后出原则,即先进去的被堵在屋里的最里面,后进去的在门口,释放的时候门口的先出去。

存放内容

  • 临时创建的局部变量和const定义的局部变量存放在栈区。

  • 函数调用和返回时,其入口参数和返回值存放在栈区。

2. 堆区

堆区介绍

  • 堆区由程序员分配内存和释放。

  • 堆区按内存地址由低到高方向生长,其大小由系统内存/虚拟内存上限决定,速度较慢,但自由性大,可用空间大。

调用函数

  • 用malloc等函数实现动态分布内存。

void *malloc(size_t);
  • 参数size_t是分配的字节大小。

标签:栈区,自由性,堆区,嵌入式,存放,内存,size
From: https://blog.csdn.net/weixin_41114301/article/details/137174477

相关文章

  • 嵌入式开发学习笔记1——keil软件入门
    学习笔记(2024.3.30)引言从对几个问题的思考入手:1、keil是什么?干什么用的?有什么优点?2、keil从哪里下载?怎么安装?3、keil学习路线图怎么比较合理?学习的顺序?4、怎么快速用起来?1、keil是什么?干什么用的?有什么优点?keil软件介绍Keil是一款单片机开发环境,主要研发8051微控制器......
  • jg学习嵌入式(embadded)的第一天
    学习嵌入式(embadded)的第一天C语言运行机制流程编写源文件->预处理->编译(得到汇编文件)->汇编(得到目标文件)->与库文件进行连接(得到可执行文件)->执行标识符(一切程序员自己定义的变量)规范强制规范严格区分大小写只能用英文或数字和下划线组成不能以数字开头不能是关......
  • 硬件算法协同优化-嵌入式深度学习3
    嵌入式深度学习-硬件与算法协同优化本系列博客主要以BertMoons《EmbeddedDeepLearning》翻译而成GoetschalckxK,MoonsB,LauwereinsS,AndraudM,VerhelstM(2018)Optimizedhierarchicalcascadedprocessing.IEEEJEmergingSelTopCircuitsSyst.https://doi.o......
  • 蓝桥杯嵌入式之AT24C02各种数据的读写
    一、1字节8为的读写u8a=10;u8temp;eeprom_write(0x00,a); temp=eeprom_read(0x00); sprintf(text,"  temp=%d ",temp);      LCD_DisplayStringLine(Line1,(u8*)text);      memset(text,'\0',strlen(text));二、对于uint16_t、int16_t......
  • 优化的层次级联处理-嵌入式深度学习2
    嵌入式深度学习-优化的层次级联处理本系列博客主要以BertMoons《EmbeddedDeepLearning》翻译而成GoetschalckxK,MoonsB,LauwereinsS,AndraudM,VerhelstM(2018)Optimizedhierarchicalcascadedprocessing.IEEEJEmergingSelTopCircuitsSyst.https://doi.o......
  • 嵌入式开发中设备抽象的具体实现
    概要在嵌入式开发过程中,设备抽象具有极其重要的作用。以下是设备抽象的几个重要方面:平台无关性:设备抽象可以使得软件与底层硬件解耦,从而实现平台无关性。通过抽象出设备的功能接口和操作方法,可以使得相同的代码可以在不同的硬件平台上运行,而无需进行大量的修改。这对于......
  • ARM 芯片的嵌入式代码移植注意事项
    嵌入式系统在我们的日常生活中无处不在,从智能手机和可穿戴设备到汽车和工业控制系统。ARM架构是嵌入式系统中广泛使用的处理器架构,以其高性能、低功耗和成本效益而闻名。然而,在将代码从一个ARM芯片移植到另一个ARM芯片时,需要注意一些关键事项,以确保移植的成功。处理器......
  • 【嵌入式开发】561
    【嵌入式开发】从FLASH读取数据详解在嵌入式开发领域,FLASH存储器因其非易失性、高密度和相对较低的成本而被广泛应用。FLASH存储器通常用于存储程序代码、常量数据、配置参数等,甚至在某些系统中用作文件系统来存储动态数据。因此,从FLASH中读取数据是嵌入式开发中一项至关......
  • 痞子衡嵌入式:给i.MXRT1xxx系列GPIO提早供电会影响DCDC_PSWITCH上电时序导致内部DCDC启
    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是给i.MXRT1xxx系列GPIO提早供电会影响DCDC_PSWITCH上电时序导致内部DCDC启动失败。最近有一个RW612产品线的同事在设计一个双MCU系统Demo时发现,当RW612板卡和RT1060板卡通过UART对接时,如果RW6......
  • 【嵌入式开发】553
    【嵌入式开发】STM32使用SPI外设通讯时的状态寄存器SR详解在STM32微控制器的SPI(SerialPeripheralInterface)通讯中,状态寄存器(SR)扮演着至关重要的角色。这个寄存器反映了SPI通讯在不同阶段的状态,开发者通过读取这些状态标志,可以实时了解通讯的进度和可能发生的错误,从而做......