一起学LiteOS,第二天,动态内存分配

举报
xiegb 发表于 2019/11/21 14:28:46 2019/11/21
【摘要】 学习了多任务后,别人的工程看起来也就不那么无从入手,起码知道main函数开始,一步一步创建不同的任务,实现具体的功能,但是这只是开始,看别人工程时,还有很多内容估估下,不能肯定,所以按华为的手册继续学习liteOs的内核编程是很多必要的,即使不知道现在学来有什么用。今天学习动态内存分配,先华为提供了那些函数,如下图:现在开始看代码,首先分配一块固定内存块(编译时指定),内存块指针类型为UIN...

学习了多任务后,别人的工程看起来也就不那么无从入手,起码知道main函数开始,一步一步创建不同的任务,实现具体的功能,但是这只是开始,看别人工程时,还有很多内容估估下,不能肯定,所以按华为的手册继续学习liteOs的内核编程是很多必要的,即使不知道现在学来有什么用。


今天学习动态内存分配,先华为提供了那些函数,如下图:

image.png


现在开始看代码,首先分配一块固定内存块(编译时指定),内存块指针类型为UINT32,所以把字条大小为256这个值除4。

要进行动态分配/释放之前,需要先对该编译时指定的内存空间进行初始化,调用函数为LOS_MenInit,参数为内存空间的指针和字节为单位的大小,这个函数是内核心提供的,如果我们只关心liteos的应用,不打算开发自己的liteos,可以不去深入研究,只要知道必须先init一下就可以。

image.png


接下来就是基于这个内存块进行动态分配和释放操作,分配用LOS_MemAlloc函数,释放用LOS_MenFree函数,第一个参数都是编译时分配的那个固定内存块的名称(指针),对于MemAlloc,第二个参数是要分配的内存大小(字节大小);对于MenFree,第二个参数是分配出来的动态内存的地址。


1、假如编译分配的内存大小为256字节,MemAlloc的最大可分配空间只有160-170之间,因为管理有开销

2、MemAlloc可以分配多块动态内出来

3、可动态分配,动态释放


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。