首页 UC_OS创建内存块详解

UC_OS创建内存块详解

举报
开通vip

UC_OS创建内存块详解说明:UCOS内存分区的建立,实际上就是定义一个二维数组,二维数组的每行元素的个数指定内存块的字节数,列数指定内存分区中一共有多少个内存块。 例如:定义 a[10][12]:即要创建一个内存区,内存区共有10个内存块(列数),每个内存块的长度为12个字节.(每行字节数) OS_MEM *OSMemCreate (void *addr, INT32U nblks, INT32U blksize, INT8U *err) 函数参数说明: //void *addr: 内存分区的起始地址 //INT32U nb...

UC_OS创建内存块详解
说明:UCOS内存分区的建立,实际上就是定义一个二维数组,二维数组的每行元素的个数指定内存块的字节数,列数指定内存分区中一共有多少个内存块。 例如:定义 a[10][12]:即要创建一个内存区,内存区共有10个内存块(列数),每个内存块的长度为12个字节.(每行字节数) OS_MEM *OSMemCreate (void *addr, INT32U nblks, INT32U blksize, INT8U *err) 函数参数说明: //void *addr: 内存分区的起始地址 //INT32U nblks: 分区中内存块的数目 //INT32U blksize: 每个内存块的字节数 局部变量定义: INT8U *pblk; //定义INT8U类型的指针 void **plink; //定义void类型的指向指针的指针 INT32U i; //定义INT32U类型的变量 局部变量定义说明: INT8U *pblk: 用INT8U的类型的指针变量,pblk进行加1或减1运算时,pblk的内容是以字节为单位变化的。这样有利于内存块长度以字节为单位进行计算。 void **plink; 定义plink为指向指针的指针,其作用是能将每个一位数组的起始地址中存放一个地址变量,即指针。 plink = (void **)addr;将二维数组一个元素的地址转换为指向指针的指针类型,其作用是可以使* plink中存放一个地址变量,即指针。实际上就是将一维数组的起始地址存放一个指针变量,以便指向下个内存块的首地址。 pblk = (INT8U *)addr + blksize; blksize定义为内存控制的长度,将addr转换为INT8U类型的指针,作用是使每个元素以字节为单位进行运算,(INT8U *)addr + blksize-1,实际上就是一个内存块占用的字节数。而现在的pblk 正好指向下个内存块的首地址。 for (i = 0; i < (nblks - 1); i++) { *plink = (void *)pblk; //使内存块的第一个字节放下个内存块的首地址,* plink即plink指向的单元放的是一个指针变量 plink = (void **)pblk; //使plink指向下个内存块的首地址 pblk = pblk + blksize; //使pblk指向再下个内存块的首地址,即移动一个内存块的大小 }
本文档为【UC_OS创建内存块详解】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_445557
暂无简介~
格式:doc
大小:28KB
软件:Word
页数:1
分类:互联网
上传时间:2013-03-13
浏览量:20