版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4.4.3动态管理接口及应用通过本节学习,您可以:了解动态管理接口说明及应用动态管理接口及应用OpenHarmonyLiteOS-M内核的动态内存模块提供了初始化内存池、申请释放动态内存、获取内存池信息、获取内存块信息等几种功能。1.动态内存管理接口功能分类接口名描述初始化和删除内存池
LOS_MemInit初始化一块指定的动态内存池,大小为sizeLOS_MemDeInit删除指定内存池,仅打开编译控制开关LOSCFG_MEM_MUL_POOL时有效申请、释放动态内存
LOS_MemAlloc从指定动态内存池中申请size长度的内存LOS_MemFree释放从指定动态内存中申请的内存LOS_MemRealloc按size大小重新分配内存块,并将原内存块内容拷贝到新内存块。如果新内存块申请成功,则释放原内存块动态管理接口及应用功能分类接口名描述获取内存池信息
LOS_MemPoolSizeGet获取指定动态内存池的总大小LOS_MemTotalUsedGet获取指定动态内存池的总使用量大小LOS_MemInfoGet获取指定内存池的内存结构信息,包括空闲内存大小、已使用内存大小、空闲内存块数量、已使用的内存块数量、最大的空闲内存块大小LOS_MemPoolList打印系统中已初始化的所有内存池,包括内存池的起始地址、内存池大小、空闲内存总大小、已使用内存总大小、最大的空闲内存块大小、空闲内存块数量、已使用的内存块数量。仅打开编译控制开关LOSCFG_MEM_MUL_POOL时有效。动态管理接口及应用功能分类接口名描述获取内存块信息
LOS_MemFreeNodeShow打印指定内存池的空闲内存块的大小及数量LOS_MemUsedNodeShow打印指定内存池的已使用内存块的大小及数量检查指定内存池的完整性LOS_MemIntegrityCheck对指定内存池做完整性检查,仅打开LOSCFG_BASE_MEM_NODE_INTEGRITY_CHECK时有效。增加非连续性内存区域LOS_MemRegionsAdd支持多段非连续性内存区域,把非连续性内存区域逻辑上整合为一个统一的内存池。仅打开LOSCFG_MEM_MUL_REGIONS时有效。动态管理接口及应用动态内存管理的一般开发流程:初始化LOS_MemInit。初始一个内存池后生成一个内存池控制头、尾节点EndNode,剩余的内存被标记为FreeNode内存节点。EndNode作为内存池末尾的节点,size为0。申请任意大小的动态内存LOS_MemAlloc。判断动态内存池中是否存在大于申请量大小的空闲内存块空间,若存在,则划出一块内存块,以指针形式返回,若不存在,返回NULL。如果空闲内存块大于申请量,需要对内存块进行分割,剩余的部分作为空闲内存块挂载到空闲内存链表上。释放动态内存LOS_MemFree。回收内存块,供下一次使用。调用LOS_MemFree释放内存块,则会回收内存块,并且将其标记为FreeNode。在回收内存块时,相邻的FreeNode会自动合并。动态管理接口及应用动态内存管理应用:初始化一个动态内存池:LOS_MemInit()从动态内存池中申请一个内存块:LOS_MemAlloc()在内存块中存放一个数据打印出内存块中的数据:printf()释放该内存块:LOS_MemFree()动态管理接口及应用具体代码如下:
#include<stdio.h>
#include"los_memory.h"
#include"ohos_init.h"
#include"ohos_types.h"
/*内存管理函数*/
voidMemory_hi(void){
UINT32*mem=NULL;
UINT32POOL_SIZE=1024;//内存池大小
UINT32oryMem[POOL_SIZE];//内存池地址
UINT8test_ohos[10]={"hiohos"};//测试数组
/*初始化内存池*/
if(LOS_MemInit(oryMem,POOL_SIZE)!=LOS_OK){
printf("Meminitfailed!\r\n");
return;}动态管理接口及应用
/**申请内存块**/
mem=(UINT32*)LOS_MemAlloc(oryMem,10);
if(mem==NULL){
printf("Memallocfailed!\r\n");
return;
}
/*内存地址读写验证*/
mem=test_ohos;//内存块存入数组
printf("\r\n*mem=%s\r\n",*mem);
/*释放内存*/
if(LOS_MemFree(oryMem,mem)!=LOS_OK){
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年四川省巴中市南江中学高二(上)月考物理试卷(1月份)(含答案)
- 市政标识牌安装工岗位技能考试试卷及答案
- 砂型铸造合箱工岗位技能考试试卷及答案
- 棉花加工辅助工安全技能知识考核试卷含答案
- 印制电路制作工诚信道德竞赛考核试卷含答案
- 水泥生产巡检工岗前工作合规考核试卷含答案
- 随钻测量工岗前交接考核试卷含答案
- 列车员操作技能考核试卷含答案
- 影视服装员操作水平竞赛考核试卷含答案
- 玻璃钢制品喷射工岗中合规考核试卷含答案
- GB/T 12823.2-2026摄影和图形技术密度测量第2部分:透射密度的几何条件
- 2026中国养蚯蚓行业市场现状供需分析及投资评估规划分析研究报告
- 7 培养德智体美劳全面发展的社会主义建设者和接班人 探究积累(课件)
- 《建筑施工安全》门窗安装专项安全培训
- 超声引导关节腔注射
- 2026陕西事业单位综合应用能力真题
- 建筑业10项新技术深度解读
- 2026年及未来5年市场数据中国留学金融行业市场全景监测及投资前景展望报告
- 2026新疆新业有资产经营(集团)有限责任公司招聘备考题库及答案详解(夺冠系列)
- 神经外科手术中神经电生理监测的文献回顾
- 西医学习中医培训结业考试大纲(试行 )
评论
0/150
提交评论