前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nuttx的realloc流程

Nuttx的realloc流程

原创
作者头像
colourfate
发布2024-02-20 17:06:30
1200
发布2024-02-20 17:06:30

1 内存管理模型

此处讨论的是nuttx的堆内存管理,其中内存管理模型如下图所示

2 通过realloc缩小内存

参考函数:nuttx/mm/mm_heap/mm_realloc.c,其中缩小内存直接进入以下分支返回,可以看到返回的仍然是oldmem,内存地址不会改变

其中有个mm_shrinkchunk函数是完成缩小内存块的具体工作的,分为两种情况

  1. 缩小的内存块后面一块内存是空闲的,此时会减小当前内存块的大小,然后将多余内存合并到后面一块内存中,然后重新插入空闲链表
  2. 缩小的内存块后面一块内存已经分配,此时减小当前内存块的大小之后,将多余内存生成一个独立的内存块插入到空闲链表中

对应的代码如下:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 内存管理模型
  • 2 通过realloc缩小内存
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档