初级会员
- 积分
- 176
- 金钱
- 176
- 注册时间
- 2016-6-29
- 在线时间
- 34 小时
|
1金钱
大家好,我在看内存管理任务这一章时,定位到OSMemCreate此函数,很不明白空闲链表块怎么连成一个链表的?
p_link = (void **)p_addr; //1.(void **)不是二级指针吗? 我跟着调试走的时候,发现p_link直接得到了p_addr的地址
p_blk = (CPU_INT08U *)p_addr; //2.这里为何要强制转成(CPU_INT08U *)指向这个无符号字节型的指针?
loops = n_blks - 1u;
for (i = 0u; i < loops; i++) {
p_blk += blk_size;
*p_link = (void *)p_blk; //3.这里也看不懂 p_blk,这里又把p_blk的地址强制转化成(void *)类型的指针,而且调试时发现这句貌似不起作用
p_link = (void **)(void *)p_blk;//4.这里也是一脸懵比,,收线强制转换成(void *)类型的指针,然后又加上(void **) 是什么个意思?调试是就是把p_blk的地址赋值给p_link
}
没学好指针,看得一脸懵比啊,求解析。
|
|