深圳鼎盛合科技系芯海一级代理商代理芯海,代理芯海高精度ADC芯片,SOC芯片,wifi及蓝牙模块
单片机芯片设计鼎盛合科技分享关于单片机的内存管理详细问题 内存管理,是指软件运行时对计算机内存资源的分配和使用的技术其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源我们知道单片代理芯海机芯片的内存可以通过外露哦SRAM来实现内存容量的扩展,扩展之后我们可以使用的内存就比较多了。
尽管有这么多可使用的内存,但我们还是得使用某种方式来有效管理这些内存,这种方式和我们学习 C 语言时,使用 malloc 和 free 函数来申请内存和内存释放类似,malloc 用于申请代理芯海内存,free 用于释放内存。
深圳鼎盛合科技系芯海一级代理商,代理芯海高精度ADC芯片,SOC芯片,wifi及蓝牙模块
所以接下来单片机芯片设计鼎盛合就来介绍一种简单的内存管理方式:分块内存管理该方法的实现原理如图 44.1.1 所示: 代理芯海 从上图我们可以看出,内存管理由内存池和内存管理表两部分组成,内存池被分成 n 个内存块,然后对应内存管理表,内存管理表就是用来标识相应的内存块是否使用,我们可以对它进行设置。
当相应的内存管理表设置为 0 的时候,表示该内存块没有被使用;而当内存管理表设置为非代理芯海零的时候,表示该内存已被使用,而内存管理表里面的数字表示当前申请内存块的数量,且申请的内存块是连续的 从上图中我们还可以看出内存分配的方向是从底到顶的分配方向,即首先从最末端开始找空内存。
通常当内存管理刚初始化的时候,内存表全部清零,表示没有任何内存块被占用 代理芯海 (1)内存分配原理 当指针 p 调用 malloc 申请内存的时候,先判断 p 要分配的内存块数(m),然后从第 n 项开始,向下查找,直到找到 m 块连续的空内存块(即对应内存管理表项为 0),然后将这 m 个内存管理表项的值都设置为 m(标记被占用),最后,把最代理芯海后的这个空内存块的地址返回指针 p,完成一次分配。
注意,如果当内存不够的时候(找到最后也没找到连续的 m 块空闲内存),则返回 NULL 给 p,表示分配失败 (2)内存释放原理 当 p 申请的内存用完,需要释放的时候,调用 fre代理芯海e 函数实现free 函数先判断 p 指向的内存地址所对应的内存块,然后找到对应的内存管理表项目,得到p 所占用的内存块数目 m(内存管理表项目的值就是所分配内存块的数目),将这 m 个内存管理表项目的值都清零,标记释放,完成一次内存释放。
单片机芯片鼎盛合专注做电子秤方案、充代理芯海气泵方案、红外额温枪方案等一系列电子pcba方案开发,可为客户提供一整套服务系统
深圳鼎盛合科技系芯海一级代理商,代理芯海高精度ADC芯片,SOC芯片,wifi及蓝牙模块