f4a0 rtthread中rt_malloc的诡异问题
本帖最后由 yqzq101 于 2024-11-30 05:30 编辑我用rtt创建的工程,跑f4a0。 发现个奇怪的问题, 当我用rt_malloc分配内存, 发现分配的内存区是无法写入的,随便写什么数据都没效果。。请问这是啥问题。。
比如这三个地址
随便写入什么,读出来的还是原来的值。。。
谢谢
##########
取消取消。。自己低级错误。。麻烦版主删帖。。
好奇是啥低级错误 当您使用 rt_malloc 分配内存后,发现分配的内存区域无法写入数据,这可能是由以内存分配失败导致的,首先确认 rt_malloc 是否成功分配了内存。如果分配失败,它会返回 NULL 或错误指针,尝试写入这样的地址会导致不可预测的行为。
可能存在内存区域重叠的情况,即您尝试写入的地址可能与已分配的内存或其他系统使用的内存区域冲突。这可能导致写入操作没有实际效果。
检查您的内存管理设置。在某些情况下,RTOS 或 MCU 的内存管理单元可能有特定的限制或设置,可能会影响动态内存分配的行为。
在某些情况下,硬件故障或特定的 MCU 行为可能导致内存写入失败。检查 MCU 的数据手册和参考手册,看看是否有关于内存访问的特定注意事项或限制。
编译器/链接器问题,确保您的编译器和链接器设置正确,特别是与内存布局相关的设置。错误的设置可能会导致内存访问问题。
针对您提供的地址,如果这些地址是 rt_malloc 返回的,并且您确认分配成功,那么问题可能更偏向于硬件或内存管理设置方面。
确认 rt_malloc 调用是否成功返回非 NULL 指针。
使用调试工具检查这些地址是否真的被分配为可用内存。
检查 MCU 的数据手册和参考手册,了解任何与内存访问相关的特定注意事项或限制。
如果可能的话,尝试在不同的地址上分配内存并写入数据,以排除特定地址的问题。 需要修改堆栈大小
页:
[1]