新手上路
- 积分
- 30
- 金钱
- 30
- 注册时间
- 2022-1-13
- 在线时间
- 8 小时
|
发表于 2022-2-13 01:18:58
|
显示全部楼层
我大概说一下自己的理解,有不对的地方还请原子哥和各位大神指正
const u32 memtblsize[SRAMBANK]={MEM1_ALLOC_TABLE_SIZE, MEM2_ALLOC_TABLE_SIZE, MEM3_ALLOC_TABLE_SIZE}; //内存表大小
u16 mem1mapbase[MEM1_ALLOC_TABLE_SIZE];
这个表是u16,也就是说在内存空间中开辟了MEM1_ALLOC_TABLE_SIZE*2个8位的内存空间(内存空间的最小单位是字节,8位)。
现在要把这个表清零,每次只能清除一个8位的内存单元
所以,下面这行语句要乘2。
mymemset(mallco_dev.memmap[memx], 0,memtblsize[memx]*2);//内存状态表数据清零 。
至于后面楼主提出的把这里的u8改为u16的问题(u8 *xs = s;)
只是扩大了只能能够表示地址的范围(实际上没有意义,u8已经足够表示地址),并不能使其一次清除16位的内存 。
因此原子哥回复的是改了后并不能去掉*2 |
|