内存管理例程理解问题

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条回答
来俩不甜的
1楼-- · 2019-08-13 23:37
一个是 U16  一个是 U32,自然要 *2
szczyb1314
2楼-- · 2019-08-13 23:59
谁来解答下?
szczyb1314
3楼-- · 2019-08-14 05:02
 精彩回答 2  元偷偷看……
szczyb1314
4楼-- · 2019-08-14 05:05
来俩不甜的 发表于 2017-10-19 15:13
一个是 U16  一个是 U32,自然要 *2

32单片机中一个地址“占四个字节”,但是只能“存一个字节”。
举个例子:在地址0x40010800处存了一个数据0xff。
这个地址0x40010800要占四个字节来存储,但是这个地址0x40010800位置上只能存储0xff这样的一个字节。
这样子的话:U16在32中占两个字节存放,u32占四个字节存放,u8占一个字节存放。
这样子就理解清楚了
正点原子
5楼-- · 2019-08-14 09:27
mallco_dev.memmap是数组首地址,且是u16类型的,memtblsize表示数组的元素个数,而设置函数,是以字节为单位的。自然要乘以2,
szczyb1314
6楼-- · 2019-08-14 10:32
正点原子 发表于 2017-10-20 00:38
mallco_dev.memmap是数组首地址,且是u16类型的,memtblsize表示数组的元素个数,而设置函数,是以字节为单 ...

想明白了,谢谢

一周热门 更多>