Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Embedded Nuttx堆分配失败:堆大小为零_Embedded_Heap Memory_Nuttx - Fatal编程技术网

Embedded Nuttx堆分配失败:堆大小为零

Embedded Nuttx堆分配失败:堆大小为零,embedded,heap-memory,nuttx,Embedded,Heap Memory,Nuttx,我想在mm_heap上分配一些内存,但其大小为零: 这会导致内存分配失败。 如何调试此问题 作为参考,我在STM32F765上使用Nuttx。堆大小为零,因为从未向堆中添加任何内容。您可以看到这一点,因为内存区域(mm_n区域)的数量也是零 内存区域由mm_initialize()中的mm_addregion()添加到堆中;保证至少调用一次以添加至少一个内存区域。如果内存区域数为零,则此函数因某种原因失败 函数失败的唯一方法是传递错误的参数。参数的传递基于您正在使用的up_allocatehe

我想在
mm_heap
上分配一些内存,但其大小为零:

这会导致内存分配失败。 如何调试此问题


作为参考,我在STM32F765上使用Nuttx。

堆大小为零,因为从未向堆中添加任何内容。您可以看到这一点,因为内存区域(mm_n区域)的数量也是零

内存区域由mm_initialize()中的mm_addregion()添加到堆中;保证至少调用一次以添加至少一个内存区域。如果内存区域数为零,则此函数因某种原因失败

函数失败的唯一方法是传递错误的参数。参数的传递基于您正在使用的up_allocateheap()实现提供的参数


因此,您必须查看up\u allocateheap()以了解传递的内容。可能会设置一个断点mm_addregion(),以查看它到底不满意什么。

非常感谢您的回答

我能解决这个问题

我的程序中的stm32_boot.c和stm32_appinitialize.c有点混淆(复制粘贴错误)

此外,我还没有在menueconfig->RTOS Features->RTOS hook中激活“BOARD\u LATE\u INITIALIZE”

因此,在初始化堆之前调用了GPIO初始化函数,这导致了我在问题中描述的错误