再使用RTOS的自带malloc函数,出现程序卡在这个位置

img


大家有遇到过多次使用freeRTOS的malloc时候程序卡在这个位置的问题吗,想请教一下这个问题是什么问题导致的,是我数组越界了嘛?

估计是越界了~自己计算下申请内存的长度和使用的长度是否能匹配上

【以下回答由 GPT 生成】

根据所提供的代码片段,我注意到其中存在一些问题,可能会导致程序在这段代码的某一位置卡住。

  1. 在循环条件中存在一个错误,导致循环无法正确终止。条件(pxBlock->xBlockSize - xWantedSize)应该改为(pxBlock->xBlockSize > xWantedSize)

  2. 在分割块的代码部分,缺少了更新分割后的块大小的步骤。应该在pxNewBlockLink->xBlockSize后面添加一行代码:pxBlock->xBlockSize = xWantedSize

由于以上问题,可能导致程序卡在特定位置。请尝试修复上述问题,然后重新运行程序,看看是否解决了问题。

关于数组越界的问题,根据所提供的代码片段,我没有看到明显的数组越界错误。然而,在实际编程中,如果在该代码片段的前面或后面有涉及数组的操作,可能会导致数组越界错误。如果你怀疑数组越界是导致问题的原因,请检查代码中涉及数组的其他部分。

如果修复了上述问题,但问题仍然存在,或者代码中还涉及其他部分的数组操作,我建议你提供更多的代码片段或问题上下文,以便更详细地分析和解决该问题。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

已找到结果,是由于我在pvPortMalloc之后的memcpy操作时候数组越界了,导致这个问题的出现