我的程序里面有两个大小一样的结构体数组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)
---------------------- -------- --------- -------- -------- ---- --------
BOOT_RSVD 00000002 00000120 00000000 00000120 RWIX
RAMM1 00000400 00000400 00000300 00000100 RWIX
片内空间还是比较充足的,malloc失败除了空间不够之外还有什么原因?