使用malloc函数的疑问:
硬件平台:
CPU:ATMEL AT91M40800
SRAM:512KB 地址空间0x400000~0x47ffff
FLASH:2MB 地址空间0x1000000~0x11fffff
使用小main函数来进行加载域与运行域的重定位。
堆栈空间分配如下:
__value_in_regs struct __initial_stackheap __user_initial_stackheap(
unsigned R0, unsigned SP, unsigned R2, unsigned SL)
{
struct __initial_stackheap config;
config.heap_base = 0x400000 + 0x70000;
config.stack_base = 0x400000 + 0x80000;//SP;
//config.heap_limit = config.heap_base - HEAP_SIZE;
//config.stack_limit = 0x1000;
return config;
}
结果在任务中使用malloc函数去申请超过4K的空间时总是返回失败,小点的空间倒是可以申请得到,
如果在创建任务之前使用malloc函数申请一个4096的空间,然后释放掉,之后再在任务中使用malloc
函数申请任意空间都不会再返回失败了。
如果在创建任务之前使用malloc函数申请一个较小的空间,比如2K,之后再在任务中使用malloc函数还是会出现
超过4K空间申请不到的现象。
百思不得其解,望各位大虾诊断一下!