STM32F4——内存管理

一、简介:

    对于内存的管理主要是用来管理MCU在运行过程中内存资源的分配和使用问题,主要解决的问题是如何高效和快速的分配,并在适当时候回收内存资源,内存管理的方法也有很多种,但是最终都是在解决两个函数:malloc(内存申请)和free(内存释放)。

二、分块式内存管理原理

    存储方式:在这里介绍有关分块式内存管理的原理,对于分块式内存管理由内存池和内存管理表两部分组成,内存池被等分为n块,对应内存管理表大小也为n,内存管理表的一项对应内存池的一块内存。

    内存管理表:当内存管理表中的该项值为0时,表示该块内存未被占用,当该项值不为0时表示该项对应的内存块已被占用,而其值表示被连续占用的内存块数,例如如果该项值为10,则表示有连续的10块内存被占用。

    内存分配:对于内存的分配,内存分配方向为从内存池顶部向底部分配。在内存初始化后内存管理表中的值都为0,表示没有内存被占用。

三、分块式内存管理的内存分配原理

    当指针p调用malloc函数分配内存的时候,首先根据需要内存大小判断需要的内存块数目,例如需要m个内存块,然后从n项开始向下查找,如果有连续的m块内存没有被占用(即内存管理表中的值为0),则将这连续的m块内存对应的内存管理表内存设置为m,标志该段内存被占用。再将最后为空内存的那个内存块地址返回给p,完成一次内存的分配!如果遍历这个内存池都没有发现需要的内存大小,内存分配失败。

四、分块式内存管理的内存释放原理

    当需要释放内存时,p调用free函数,free函数首先判断p指向的地址所在的内存池,通过内存池找到对应的内存管理表项,取得内存管理表项中的值m,将这连续的m个内存管理表

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值