定义内存池大小:
#define MEM1_MAX_SIZE 100*1024
__align(32) u8 mem1base[MEM1_MAX_SIZE]; //定义内存池100KByte
启动代码里面定义的堆的大小:
Heap_Size EQU 0x00000200 ;512Byte
问题:
1、 mem1base[MEM1_MAX_SIZE] 这个数组是如何对应到芯片的SRAM的?
2、malloc动态分配内存空间不是在堆中吗?但是这个内存池的大小(100KB)明显大于堆的大小了,
3、假如不是分配在堆中,那这个数组 mem1base[MEM1_MAX_SIZE] 是一个全局变量数组吗?如果是,那整个内存地址分配都是在这个数组里面进行并由内存管理表数组mem1mapbase[MEM1_ALLOC_TABLE_SIZE]进行记录、管理?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
谢谢指点,我问的就是程序里面的malloc()和free(),我以为是标准C里面的修改的。也就是说自己在刚开始定义一个大数组,然后自己写函数利用这个大数组模拟内存分配功能,是这个思路吗?还有个问题是,为什么内部内存池的数组没有利用__attribute__()来定义地址?
一周热门 更多>