打印
[STM32F4]

stm32F407平台上使用freertos,使用pvPortMalloc申请内存,发现内存中的数据总被修改,使用malloc就没有问题。

[复制链接]
374|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
stormwind123|  楼主 | 2025-1-21 16:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,我现在在stm32F407平台上打开FREERTOS,然后使用pvPortMalloc动态申请内存的时候,发现这块内存中的数据总是变化,后面改为malloc申请,内存中的数据就符合预期了,我已经按照网上的流程配置了freertos,不知道是什么原因导致这种现象?

使用特权

评论回复
沙发
Amazingxixixi| | 2025-1-21 16:44 | 只看该作者
学习一下啊,还有好多需要学习的。

使用特权

评论回复
板凳
一秒落纱| | 2025-2-10 01:12 | 只看该作者
STM32F407平台上使用FreeRTOS时,遇到使用pvPortMalloc动态申请内存后数据总是变化的问题,而改用标准的malloc函数则数据符合预期,这通常与FreeRTOS的内存管理机制有关

使用特权

评论回复
地板
夜阑风雨| | 2025-2-10 02:21 | 只看该作者
pvPortMallocFreeRTOS提供的内存分配函数,它基于FreeRTOS的内存管理策略进行内存分配

使用特权

评论回复
5
远山寻你| | 2025-2-10 03:27 | 只看该作者
标准的malloc函数则是由C标准库提供的,通常用于通用内存分配。两者在内存分配的实现上可能存在差异,例如内存池的使用、内存碎片的处理等

使用特权

评论回复
6
三生万物| | 2025-2-10 04:32 | 只看该作者
FreeRTOS可能启用了内存保护机制,如硬件MPU(内存保护单元)的配置,以防止内存访问越界或非法访问。如果内存分配或访问不符合FreeRTOS的内存管理规则,可能会导致数据异常

使用特权

评论回复
7
光辉梦境| | 2025-2-10 05:24 | 只看该作者
使用pvPortMalloc分配的内存可能没有被正确初始化,导致内存中的数据是随机的或未定义的

使用特权

评论回复
8
暖了夏天蓝了海| | 2025-2-10 06:26 | 只看该作者
malloc分配的内存可能在某些实现中会被自动初始化为0或某个特定值

使用特权

评论回复
9
江河千里| | 2025-2-10 07:29 | 只看该作者
FreeRTOS的配置可能存在问题,如堆大小设置不当、内存池配置错误等。或者代码中可能存在内存泄漏、越界访问等错误,导致内存数据异常

使用特权

评论回复
10
冰春彩落下| | 2025-2-10 08:42 | 只看该作者
在使用pvPortMalloc分配内存后,手动初始化内存区域,确保数据的有效性

使用特权

评论回复
11
别乱了阵脚| | 2025-2-10 09:56 | 只看该作者
在使用pvPortMalloc分配内存后,手动初始化内存区域,确保数据的有效性

使用特权

评论回复
12
淡漠安然| | 2025-2-10 10:56 | 只看该作者
如果怀疑内存保护机制导致问题,可以尝试禁用MPU(但请注意,这可能会降低系统的安全性和稳定性)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

470

主题

2713

帖子

3

粉丝