[应用方案] 为什么单片机中很少使用malloc,而PC程序频繁使用?

[复制链接]
109|26
mnynt121 发表于 2026-2-14 13:15 | 显示全部楼层
PC: 内存通常以 GB 为单位。对于操作系统来说,分配几 KB 甚至几 MB 的内存就像大海里舀一瓢水,根本不用心疼。即使浪费了一点,也几乎不影响大局。
单片机: RAM 通常以 KB 为单位。普通的 STM32 可能只有 20KB - 192KB,极小的 51 单片机甚至只有几百字节。在这种环境下,每一字节都寸土寸金。malloc 还需要额外的内存管理数据结构,这本身就是一种昂贵的开销。
sesefadou 发表于 2026-2-14 16:30 | 显示全部楼层
PC 程序的虚拟地址空间是严格分区的,堆区和栈区相距甚远,不会出现相互覆盖的问题
yorkbarney 发表于 2026-2-15 09:50 | 显示全部楼层
通过全局变量、静态数组或预分配的内存池管理内存
geraldbetty 发表于 2026-2-15 10:20 | 显示全部楼层
在 MCU 中,静态分配 > 栈分配 > 动态分配。
elsaflower 发表于 2026-2-15 18:14 | 显示全部楼层
PC 有虚拟内存管理,有巨大的地址空间,碎片化问题不那么容易暴露;而单片机一旦碎片化,除了重启没有别的办法。
hudi008 发表于 2026-2-21 21:53 | 显示全部楼层
单片机中避免使用 malloc 是资源限制、实时性要求、可靠性需求共同作用的结果。
alvpeg 发表于 2026-2-21 22:45 | 显示全部楼层
在编译阶段就确定好了地址和大小,永不移动,最安全、最高效。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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