[LKS32 软件] 为什么单片机上的程序不建议使用malloc?

[复制链接]
2210|49
adolphcocker 发表于 2025-3-15 00:03 | 显示全部楼层
malloc 需要遍历空闲块或合并碎片,可能导致不可预测的执行时间
vivilyly 发表于 2025-3-15 03:07 | 显示全部楼层
大多数单片机的片上 RAM 非常有限,通常只有几 KB 或十几 KB,甚至更少。使用 malloc 进行动态内存分配可能会导致内存碎片,使得剩余的内存无法有效利用。
timfordlare 发表于 2025-3-15 07:33 | 显示全部楼层
内存泄漏在嵌入式系统中不易察觉,尤其在小内存场景下,可能引发随机故障。
youtome 发表于 2025-3-15 11:41 | 显示全部楼层
动态内存分配(如malloc)的延迟是不确定的,可能会因为内存分配失败或内存碎片问题导致程序的执行时间不稳定,甚至系统崩溃。因此,在这些应用中更倾向于使用静态内存分配或使用固定大小的内存池来避免这些问题。
星空魔法师 发表于 2025-3-19 19:56 | 显示全部楼层
难怪单片机上不建议用malloc,那有没有什么简单的办法可以检测内存碎片呢
Amazingxixixi 发表于 2025-4-24 08:51 | 显示全部楼层
单片机内存有限制,如果做更多的管理的话反而导致可用内存变小,更多是提升自己的编程技巧。
LinkMe 发表于 2025-5-18 10:47 | 显示全部楼层
分配内存不释放会一直占用,得记得清理。
suncat0504 发表于 2025-5-21 21:16 | 显示全部楼层
静态内存分配 是首选方案
suncat0504 发表于 2025-5-21 21:17 | 显示全部楼层
程序中动态分配内存太频繁,容易出事儿。
明日视界 发表于 2025-6-17 23:35 | 显示全部楼层
内存碎片化时,试试内存池,统一管理内存,避免碎片。
suncat0504 发表于 2025-6-23 20:03 | 显示全部楼层
单片机的内存资源太少了
地瓜patch 发表于 2025-6-23 21:06 | 显示全部楼层
我在程序中经常用
单芯多芯 发表于 2025-7-2 10:09 | 显示全部楼层
静态分配方便,内存池省资源,看项目需求选。
软核硬核 发表于 2025-7-4 08:50 | 显示全部楼层
记得用完变量或数组后要清除,避免内存泄漏。
星闪动力 发表于 2025-7-7 19:28 | 显示全部楼层
编译时确定变量大小能精确内存管理,避免额外性能损失。
Pretext 发表于 2025-7-8 12:44 | 显示全部楼层
单片机主要处理简单任务,所以用固定内存分配就足够了。
MintMilk 发表于 2025-7-8 20:50 | 显示全部楼层
使用内存池或对象池可以提高内存使用效率,减少频繁的malloc和free操作带来的开销。
Moon月 发表于 2025-7-9 20:44 | 显示全部楼层
可以通过单片机的内存管理函数来检查剩余内存大小,间接了解碎片情况。
PreWorld 发表于 2025-7-10 20:22 | 显示全部楼层
静态分配内存稳定,适合实时性要求高、内存管理简单的应用。
zephyr9 发表于 2025-7-11 08:22 | 显示全部楼层
malloc可能会在内存管理中遇到问题,遍历和合并可能花时不确定。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部