当前位置:网站首页>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内装的
指针是指向第二块头指针。
边栏推荐
- 设备树(devicetree)-dts语法
- 漫谈Map Reduce 参数优化
- 中国水产养殖行业市场投资分析及未来风险预测报告2022~2028年
- 神经网络之感知机
- 建立平衡二叉树简单demo
- 对象の使用
- 自监督论文阅读笔记DisCo: Remedy Self-supervised Learning on Lightweight Models with Distilled Contrastive
- Leetcode刷题——128. 最长连续序列
- 自监督论文阅读笔记 Self-supervised Learning in Remote Sensing: A Review
- Oracle 分区索引详解(local、global)
猜你喜欢
设备树解析源码分析<devicetree>-1.基础结构
Kettle 从资源库中载入新的转换出错(Invalid byte 1 of 1-byte UTF-8 sequence)
【HQL】(二) 查询使用正则表达式做列选择
ASP.NET MVC3的伪静态实现
Playing with Markdown(2) - Extraction and Manipulation of Abstract Syntax Trees
优雅的拦截TabLayout的点击事件
自监督论文阅读笔记 TASK-RELATED SELF-SUPERVISED LEARNING FOR REMOTE SENSING IMAGE CHANGE DETECTION
Oracle 注释详解(--、/**/、rem)
【DC-4 Range Penetration】
自监督论文阅读笔记FIAD net: a Fast SAR ship detection network based on feature integration attention and self
随机推荐
A.1#【内存管理】——1.1.2 zone: struct zone
opencv透视变化
自监督论文阅读笔记 Multi-motion and Appearance Self-Supervised Moving Object Detection
【第四周】MobileNet和HybridSN
The result of request.getParameter is on
Mysql 存储过程详解(procedure)
Makefile自动推导的简单例程
【第三周】ResNet+ResNeXt
MySQL 慢查询
IPC 通信 - IPC
中国食品产业园区行业前景规划建议及投融资模式分析报告2022~2028年
布尔盲注需简化代码
【源码解读】你买的NFT到底是什么?
深度学习基本概念
自监督论文阅读笔记 Self-Supervised Deep Learning for Vehicle Detection in High-Resolution Satellite Imagery
Kotlin 中的泛型介绍
中国水环境治理行业投融资分析及“十四五”规划建议报告2022~2028年
理论上的嵌入式跑马灯
Execute the mysql script file in the docker mysql container and solve the garbled characters
进程间通讯 (IPC 技术) - 信号