内存管理例程理解问题

2019-08-13 18:37发布

//内存管理初始化  
void mem_init(void)  
{  
    mymemset(mallco_dev.memmap, 0,memtblsize*2);//内存状态表数据清零
        mymemset(mallco_dev.membase, 0,memsize);        //内存池所有数据清零  
        mallco_dev.memrdy=1;                                                //内存管理初始化OK  
}
其中 mymemset(mallco_dev.memmap, 0,memtblsize*2);//内存状态表数据清零 memtblsize*2中为啥要乘2?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
szczyb1314
2019-08-14 05:05
来俩不甜的 发表于 2017-10-19 15:13
一个是 U16  一个是 U32,自然要 *2

32单片机中一个地址“占四个字节”,但是只能“存一个字节”。
举个例子:在地址0x40010800处存了一个数据0xff。
这个地址0x40010800要占四个字节来存储,但是这个地址0x40010800位置上只能存储0xff这样的一个字节。
这样子的话:U16在32中占两个字节存放,u32占四个字节存放,u8占一个字节存放。
这样子就理解清楚了

一周热门 更多>