This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

各位大佬们,c2000 malloc失败是什么原因?



我的程序里面有两个大小一样的结构体数组A和B(比较大),初始化的时候要用memcpy复制到另外的结构体全局变量(C 和 D)中,复制之前会使用malloc分配空间。

给第一个全局变量C使用malloc分配大小为A的空间的时候,返回值为esysmem内地址c002

但是给第二个全局变量D使用malloc分配大小为B的空间时,返回值为0.

我的stack分配如下:

RAMM1           : origin = 0x000400, length = 0x000400     /* on-chip RAM block M1 */

.stack              : > RAMM1        PAGE = 1

我的esysmem分配如下:

RAMGS4_5_6  : origin = 0x010000, length = 0x003000

.esysmem           : > RAMGS4_5_6       PAGE = 1

我的cint分配如下:

 FLASHB           : origin = 0x082000, length = 0x008000

.cinit              : > FLASHB      PAGE = 0, ALIGN(4)

MEMORY CONFIGURATION
         name            origin    length      used     unused   attr    fill
----------------------  --------  ---------  --------  --------  ----  --------
  FLASHB                00082000   00008000  00007ffb  00000005  RWIX
PAGE 1:
  BOOT_RSVD             00000002   00000120  00000000  00000120  RWIX
  RAMM1                 00000400   00000400  00000300  00000100  RWIX
RAMGS4_5_6            00010000   00003000  00001000  00002000  RWIX

片内空间还是比较充足的,malloc失败除了空间不够之外还有什么原因?