[STM32F4] MALLOC 始终返回 null

[复制链接]
 楼主| 咚了个咚 发表于 2025-5-24 23:00 | 显示全部楼层 |阅读模式
使用 Nucleo-F439ZI 和 STM32Cube IDE。中间件LWIP 和 CMSIS_OSv2。调用 malloc 时,返回 null。这部分应用程序所需的总字节数为 161。我的解决方法是声明一个 usigned char str[161]。
RTOS 堆设置为 50000。Project management 选项卡将 Minimum heap 设置为 0x200 并将 minimum stack 设置为 0x400。
实验了只有 5 个字符的 malloc。仍然返回 null。




这是什么原因导致的
powerantone 发表于 2025-5-26 12:45 | 显示全部楼层
堆空间不足导致的吧
probedog 发表于 2025-5-26 12:46 | 显示全部楼层
建议用静态分配替代动态分配。
tpgf 发表于 2025-5-26 13:38 | 显示全部楼层
如果系统可用物理内存和虚拟内存都已被大量占用,无法满足新的内存分配请求,malloc就会返回null
stormwind123 发表于 2025-5-26 16:00 | 显示全部楼层
可能是堆内存碎片化导致的。
classroom 发表于 2025-5-26 20:00 | 显示全部楼层
检查LWIP 动态内存配置。
duo点 发表于 2025-5-26 21:00 | 显示全部楼层
用互斥锁保护 malloc 调用,改用线程安全的内存分配器
jobszheng 发表于 2025-5-26 22:30 | 显示全部楼层
需要使用RTOS里面的内存分配API。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

52

帖子

0

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