[经验分享] C语言:动态内存管理

[复制链接]
125|36
uiint 发表于 2026-10-19 14:44 | 显示全部楼层
嵌入式系统静态内存vs动态内存对比?
tifmill 发表于 2026-10-19 15:40 | 显示全部楼层
中断中能否使用malloc/free?风险是什么?
sesefadou 发表于 2026-10-19 16:19 | 显示全部楼层
如果堆分配过多,或栈递归过深,两者会碰撞,导致数据被覆盖,表现为莫名其妙的变量被修改。
elsaflower 发表于 2026-10-19 17:57 | 显示全部楼层
裸机单片机尽量避免 malloc
hearstnorman323 发表于 2026-10-19 19:34 | 显示全部楼层
malloc和`free底层通常涉及链表遍历或最佳适配算法,执行时间不可控,可能破坏RTOS的实时性或在关键中断中造成阻塞。
kmzuaz 发表于 2026-10-20 10:07 | 显示全部楼层
51 RAM 资源极小,强烈**不建议使用 malloc**,极易碎片、内存耗尽。
biechedan 发表于 2026-10-20 14:34 | 显示全部楼层
频繁分配和释放不同大小的内存块,会导致堆区产生大量无法利用的小碎片,最终导致“有总空闲空间但无法分配大块内存”的情况。
wangdezhi 发表于 2026-10-20 15:07 | 显示全部楼层
多数单片机的堆管理函数非可重入,中断中调用易导致数据错误
averyleigh 发表于 2026-10-20 19:06 | 显示全部楼层
高资源32位MCU可谨慎使用标准库,但需严格监控泄漏和碎片。
everyrobin 发表于 2026-10-20 20:31 | 显示全部楼层
在没有 MMU、不能内存整理、且要连续运行数年的单片机上,这个交换几乎***是亏本的。
uptown 发表于 2026-10-20 22:09 | 显示全部楼层
在单片机上,"什么时候分配"比"怎么分配"重要一百倍。
jonas222 发表于 2026-10-21 11:05 | 显示全部楼层
MCU的RAM通常只有几KB到几百KB,堆空间更是仅占其中一小部分。
没有虚拟内存和页交换机制,分配失败直接导致NULL返回,无退路。
10299823 发表于 2026-10-21 12:09 | 显示全部楼层
为什么单片机动态内存比PC危险得多
pixhw 发表于 2026-10-21 16:44 | 显示全部楼层
malloc的执行时间取决于堆的状态,可能是几十个时钟周期,也可能是几千个。对于实时性要求严格的控制环路,这是不可接受的。
hudi008 发表于 2026-10-21 18:43 | 显示全部楼层
避免编译期预分配大量内存,适用于启动时间敏感的场景。
xiaoyaodz 发表于 2026-10-21 19:19 | 显示全部楼层
嵌入式系统中多任务、多模块并行时,动态内存可按需分配,提升系统适应性。
juliestephen 发表于 2026-10-21 21:06 | 显示全部楼层
如何检测单片机内存泄漏?              
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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