请教原子老师&各位大神关于内存管理这个例程的疑问

2019-07-20 21:20发布

定义内存池大小:

#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]进行记录、管理?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
chenguiting
2019-07-21 00:49
zuozhongkai 发表于 2016-7-12 11:29
1、看程序,通过__attribute__()来设定数组的地址。2、还是看程序,内存管理例程中压根就没用到malloc()和f ...

谢谢指点,我问的就是程序里面的malloc()和free(),我以为是标准C里面的修改的。也就是说自己在刚开始定义一个大数组,然后自己写函数利用这个大数组模拟内存分配功能,是这个思路吗?还有个问题是,为什么内部内存池的数组没有利用__attribute__()来定义地址?

一周热门 更多>