硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3129|回复: 8
收起左侧

[其它] 分享2个动态内存管理库------buddyalloc & tinyalloc

  [复制链接]

5

主题

28

回帖

43

积分

新手上路

积分
43
发表于 2020-8-12 18:34:40 | 显示全部楼层 |阅读模式
本帖最后由 wkler 于 2020-8-12 22:32 编辑

之前做项目想要一个理想的动态分配库,但发现论坛只有 rtx 和 freertos 两种,而且算法理论上不够“靠谱”,可能存在内存碎片,搜索很久,发现 buddy alloc 算法可以避免碎片,但是浪费一定空间约23%,所以找了个库用了一段时间,发现没什么问题,故分享给各位。tinyalloc是传统方式,单元大小不是很多样的情况下也没什么问题。

BuddyMemoryMallocFree-master.zip (5.79 KB, 下载次数: 65)   这个是buddy 算法
tinyalloc-master.zip (132.61 KB, 下载次数: 76)   这个是3链表算法 也蛮好用


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106826
QQ
发表于 2020-8-12 18:49:07 | 显示全部楼层
谢谢楼主分享,学习下。
回复

使用道具 举报

11

主题

122

回帖

160

积分

初级会员

积分
160
发表于 2020-8-12 19:13:20 | 显示全部楼层
可以了解下tlsf内存分配算法,也不错。https://github.com/OlegHahm/tlsf
回复

使用道具 举报

5

主题

28

回帖

43

积分

新手上路

积分
43
 楼主| 发表于 2020-8-12 22:32:43 | 显示全部楼层
有梦为马 发表于 2020-8-12 19:13
可以了解下tlsf内存分配算法,也不错。https://github.com/OlegHahm/tlsf

里面介绍链接失效了,请问这种算法优势在哪里。
回复

使用道具 举报

2

主题

55

回帖

61

积分

初级会员

积分
61
发表于 2020-8-13 07:21:36 | 显示全部楼层
回复

使用道具 举报

38

主题

291

回帖

405

积分

高级会员

积分
405
发表于 2020-8-13 08:23:17 | 显示全部楼层
wkler 发表于 2020-8-12 22:32
里面介绍链接失效了,请问这种算法优势在哪里。

偏重于实时性,操作时长可控
分享一篇文章

TLSF (Two-Level Segregate Fit) allocator.pdf (968.66 KB, 下载次数: 81)




回复

使用道具 举报

2

主题

6

回帖

12

积分

新手上路

积分
12
发表于 2020-8-13 09:51:48 | 显示全部楼层
谢谢楼主分享,抽时间试一下
回复

使用道具 举报

2

主题

8

回帖

14

积分

新手上路

积分
14
发表于 2020-8-13 10:38:41 | 显示全部楼层
tomyqg 发表于 2020-8-13 07:21
https://www.fourmilab.ch/bget/试下这个bget

顶,bget好用,适合不带操作系统的项目
回复

使用道具 举报

610

主题

3055

回帖

4905

积分

至尊会员

积分
4905
发表于 2020-8-13 16:21:53 | 显示全部楼层
本帖最后由 hpdell 于 2020-8-13 17:26 编辑

这个 buddy 貌似如果需要在同一个工程中管理 多个内存块的话,修改 貌似有点麻烦,

或者你们有什么比较好的方法可以修改呀 ?
另外  貌似有个弊端,就是我管理内存大小为 8MB, 16MB, 32MB, 64MB 貌似都可以,但是我想管理 35MB 就不行了(按照内存的 计算方法 )  ???
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-6 05:22 , Processed in 0.185793 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表