OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2370|回复: 1

ucosIII 创建内存管理任务 OSMemCreate

[复制链接]

8

主题

74

帖子

0

精华

初级会员

Rank: 2

积分
176
金钱
176
注册时间
2016-6-29
在线时间
34 小时
发表于 2016-7-3 15:50:12 | 显示全部楼层 |阅读模式
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
}


没学好指针,看得一脸懵比啊,求解析。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165225
金钱
165225
注册时间
2010-12-1
在线时间
2107 小时
发表于 2016-7-6 23:08:46 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-1 20:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表