当前位置:网站首页>ucosII OSMemCreate()函数的解析
ucosII OSMemCreate()函数的解析
2022-08-03 05:24:00 【langaopeng】
ucosII OSMemCreate()函数的解析
OS_MEM *OSMemCreate (void *addr, INT32U nblks, INT32U blksize, INT8U *perr)
{
plink = (void **)addr;
pblk = (INT8U *)((INT32U)addr + blksize);
for (i = 0; i < (nblks - 1); i++) {
*plink = (void *)pblk;
plink = (void **)pblk;
pblk = (INT8U *)((INT32U)pblk + blksize);
}
*plink = (void *)0;
pmem->OSMemAddr = addr;
pmem->OSMemFreeList = addr;
pmem->OSMemNFree = nblks;
pmem->OSMemNBlks = nblks;
pmem->OSMemBlkSize = blksize;
*perr = OS_ERR_NONE;
return (pmem);
}
当nblk = 2,也就是说准备申请两块动态内存块时。
当执行 plink = (void **)addr;时,因为addr之前是一维指针,没有指向地址,所以需要
强转成二维指针,使用addr能指向地址,此时把addr赋给plink。但*plink还不知指向哪里。
当执行pblk = (INT8U *)((INT32U)addr + blksize);后,即把第二块的头指针赋给
pblk。
当执行*plink = (void *)pblk; 后,即把第二块头指针赋给*plink,即addr内装的指针。
即可知当传递addr时,addr是指向的是第一块内存的头指针,强转时,addr内装的
指针是指向第二块头指针。

边栏推荐
- A.1#【内存管理】——1.1.1 node:struct pglist_data
- Oracle 分区索引详解(local、global)
- 滚动条 scrollbar 和scrollbar-thumb 样式
- 自监督论文阅读笔记 Ship Detection in Sentinel 2 Multi-Spectral Images with Self-Supervised Learning
- ucos任务调度原理
- MMU 介绍-[TBL/page table work]
- 中国人力资源服务行业投资建议与前景战略规划研究报告2022~2028年
- [XSS, file upload, file inclusion]
- 磁盘空间管理
- 中国食品微生物检测行业深度监测及投资战略规划建议报告2022~2028年
猜你喜欢

Qlik Sense 聚合函数及范围详解(Sum、Count、All、ToTaL、{1})

自监督论文阅读笔记 Self-Supervised Visual Representation Learning with Semantic Grouping

Qlik Sense 赋值详解(Set、Let)
代码没写完,哪里有脸睡觉!17 张程序员壁纸推荐

自监督论文阅读笔记 Self-supervised Label Augmentation via Input Transformations

2021-04-30

【源码解读】你买的NFT到底是什么?

Playing with Markdown(2) - Extraction and Manipulation of Abstract Syntax Trees

自监督论文阅读笔记 S3Net:Self-supervised Self-ensembling Network for Semi-supervised RGB-D Salient Object Det

关于梯度下降法的一些优化方法
随机推荐
php连接数据库脚本
【源码解读】火爆的二舅币真的跑路了吗?
二叉树常见的问题和解决思路
中国生活垃圾处理行业十四五规划与投融资模式分析报告2022~2028年
【第二周】卷积神经网络
Oracle 日历表详解(含节假日)
[Rebound shell and privilege escalation]
NFT租赁提案EIP-5006步入最后审核!让海外大型游戏的链改成为可能
opencv
嵌入式实验二注意点
神经网络基础
spark sql 报错 Can‘t zip RDDs with unequal numbers of partitions
对象の使用
B.1#【编程语言】—1 arm 汇编指令
Android学习 | 08.SQLiteOpenHelper
opencv透视变化
【HQL】(一)json字符串处理json_tuple和get_json_object
【DC-4 Range Penetration】
自监督论文阅读笔记Reading and Writing: Discriminative and Generative Modelingfor Self-Supervised Text Recogn
The result of request.getParameter is on