大家好,请问在原子例程 内存管理实验中初始化函数为什么管理表要*2

2019-10-15 04:00发布

大家好,请问在原子例程 内存管理实验中初始化函数为什么管理表要*2

void my_mem_init(u8 memx)  
{  
    mymemset(mallco_dev.memmap[memx], 0,memtblsize[memx]*2);//内存状态表数据清零  
        mymemset(mallco_dev.membase[memx], 0,memsize[memx]);        //内存池所有数据清零  
        mallco_dev.memrdy[memx]=1;                                                                //内存管理初始化OK  
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
loyalboy1111
2019-10-15 18:00
kingnike 发表于 2016-5-25 15:16
因为memmap的成员是16位的,MEM1_ALLOC_TABLE_SIZE是成员的个数,乘以2才是字节数。

//内存管理控制器   函数指针
struct _m_mallco_dev
{
        void (*init)(u8);                                        //初始化
        u8 (*perused)(u8);                                      //内存使用率
        u8         *membase[SRAMBANK];                                //内存池 管理SRAMBANK个区域的内存
        u16 *memmap[SRAMBANK];                                 //内存管理状态表
        u8  memrdy[SRAMBANK];                                 //内存管理是否就绪
};

那内存池定义的是u8类型,在初始化的时候为什么不*4呢?

一周热门 更多>