日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ucos内存管理笔记

發(fā)布時間:2025/3/21 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ucos内存管理笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
http://www.jarson.asia/2011/04/23/ucos-ii%E7%9A%84%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86/ 參考以上信息 ? INT8U ? ? *pblk;
? ? void ? ? **plink;
? ? .
? ? .
? ? plink = (void **)addr; ? ? ? ? ? ? ? ? ? ?/*Create linked list of free memory blocks */
? ? pblk ?= (INT8U *)addr + blksize;
? ? for (i = 0; i < (nblks - 1); i++) {
? ? ? ? *plink = (void *)pblk;
? ? ? ? plink ?= (void **)pblk;
? ? ? ? pblk ? = pblk + blksize;
? ? }
? ? *plink ? ? ? ? ? ? ?= (void *)0; ? ?
? ?
? 紅色的部分是OsMemCreate(void * addressint32u nblks……) ? 使用創(chuàng)建內(nèi)存分區(qū)之前要分配一部分內(nèi)存給 ucos讓它來管理 OS_MEM *TxBuf;
INT8U TxPart[100][32];
?
void main(void) {
? ? INT8U err;
? ? OSInit();
? ? .
? ? .
? ? TxBuf = OSMemCreate(TxPart, 100, 32, &err);
? ? .
? ? .
? ? OSStart();
}
也就是建立一個內(nèi)存分區(qū) ? ucos是怎樣管理內(nèi)存的呢 INT8U TxPart[100][32];是建立一個有100個塊,并且每個塊石32Byte的內(nèi)存分區(qū) 作者將這個內(nèi)存分區(qū)的各個塊連接成一個鏈表來管理

其實就是將每一個塊的首個存儲空間存放先一個塊的起始地址 ? 那好了。我們看看ucosOsMemCreate(void * addressint32u nblks……)是怎樣做的 核心代碼 ? INT8U ? ? *pblk;
? ? void ? ? **plink;

? ? .
? ? .
? ? plink = (void **)addr; ? ? ? ? ? ? ? ? ? ?/*Create linked list of free memory blocks */
? ? pblk ?= (INT8U *)addr + blksize;
? ? for (i = 0; i < (nblks - 1); i++) {
? ? ? ? *plink = (void *)pblk;
? ? ? ? plink ?= (void **)pblk;
? ? ? ? pblk ? = pblk + blksize;
? ? }
? ? *plink ? ? ? ? ? ? ?= (void *)0; ? ?
函數(shù)傳遞過來的是address,也就是內(nèi)存分區(qū)首個塊的第一個地址? ? 本人認為實現(xiàn)一個內(nèi)存鏈表可以如下: 將內(nèi)存塊的指針強制轉(zhuǎn)換成整型數(shù)據(jù)。放到前一個內(nèi)存塊的首個內(nèi)存空間,這樣,前一個內(nèi)存塊就保存了下一個內(nèi)存塊的地址了。 ? 實現(xiàn)起來如下: ? Void * p1=addr; Void *p2 = addr+blksize; For(i=0;i<(nblks-1);i++) { ?????? *p1 = (uint32 ) p2; ?????? P1 = p2; ?????? P2=p2+blksize; } 大家看到我創(chuàng)建鏈表用的是整型數(shù)據(jù)賦值, 但是ucos沒有這樣做。作者用的是指針賦值,不知道是處于移植考慮還是我(菜鳥)考慮不周。或者其他原因。總之,作者的方法如下: plink = (void **)addr; ? ? ? ? ? ? ? ? ? ?/*Create linked list of free memory blocks * 作者這里用一個強制轉(zhuǎn)換,其實是為了把addr所指向的內(nèi)存空間當(dāng)成一個指針來用 這句話以后,那么編譯器就不再把第一個塊的第一個內(nèi)存空間看做一個變量了。而是成為了一個指針來處理。那么理所當(dāng)然 *plink = (void *)pblk;就是把第一個塊的第一個地址的內(nèi)存內(nèi)容放入了下一個塊的內(nèi)存地址。哈哈 為什么作者用二級指針,目的何在?作者用二級指針不是為了改變指針的值,而是把塊的第一個內(nèi)存區(qū)當(dāng)成指針來用以此賦值吧 作者可能有更遠的考慮。移植問題吧。應(yīng)為自始至終作者的都是調(diào)用void*型指針變量的。沒有用到諸如int什么的類型。因為不同編譯器對intuint等的理解是不一樣的 ? ? ? ? 到此為止吧。不知道我解釋的是不是清楚!。大家最好看看ucos內(nèi)存管理部分的內(nèi)容。因為我的講解比較粗略。 ? ?

轉(zhuǎn)載于:https://blog.51cto.com/3414033/998445

總結(jié)

以上是生活随笔為你收集整理的ucos内存管理笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国内一级视频 | 欧美日韩一二三四 | 天天操天天干天天操 | 青青操视频在线观看 | 美女的胸给男人玩视频 | 亚洲av毛片一区二二区三三区 | 亚洲av成人无码一二三在线观看 | 视频在线看| 欧美激情一级精品国产 | 国产国语videosex另类 | 800av在线播放| 中文字幕在线高清 | 人妻少妇精品无码专区久久 | 黄色av不卡 | 18久久| 成人免费在线观看 | 欧美激情一区在线 | 日韩欧美视频网站 | 福利小视频 | 国产欧洲亚洲 | xxxx日本少妇| 亚洲欧洲日产av | va婷婷| 久久精品视频在线免费观看 | 特黄特色大片免费视频大全 | 亚洲一区二区高清视频 | 精品视频不卡 | 亚洲一区美女 | 老司机深夜福利在线观看 | 久久久久久九九九 | 免费看的av片 | 中文天堂av | 欧美日本一二三区 | 国模无码视频一区 | 奶妈的诱惑| www.超碰在线观看 | 国产精品jizz在线观看老狼 | 久久久久欧美 | 噜噜噜在线| 深爱五月综合网 | 成人动漫视频 | 成年人激情网站 | 国产三级小视频 | 国产精品视频久久久久 | 日韩aa | 免费在线观看av片 | 91香蕉视频在线 | 中文字幕欧美在线观看 | 91成人网页 | 国产乱淫精品一区二区三区毛片 | 久久精品97 | 国产色在线,com | 亚洲中午字幕 | 成人性视频sm. | 久久精品无码人妻 | 91成年版 | 极品av在线 | 亚洲av成人无码久久精品 | 亚洲一区二区三区四区在线播放 | 黄色免费视频 | 波多野结衣不卡视频 | 99色婷婷 | www成人免费| 无码国产精品久久一区免费 | 在线看日本 | 久久加久久 | 日本特黄一级 | 抱着老师的嫩臀猛然挺进视频 | 尤物在线精品 | 毛片高清免费 | 超碰激情| 人人干人人做 | 国产精品有限公司 | 日本久久高清视频 | 久久老女人 | 免费人成在线观看网站 | 亚洲风情第一页 | 久久最新| 婷婷一区二区三区四区 | 欧美嫩草 | 成人动漫中文字幕 | 黄色三级三级 | 经典杯子蛋糕日剧在线观看免费 | 欧美九九视频 | 日本一区二区三区视频在线观看 | 91av在 | bl动漫在线观看 | 久久久久久久香蕉 | 亚洲精品国产精品国自产观看 | 久久久久久久9999 | 久久久国产一区 | 日韩av高清在线播放 | 亚洲系列在线观看 | www.com色| 亚洲欧洲av| 大肉大捧一进一出好爽mba | 久久免费看片 | 国产成人三级在线播放 | 亚洲一区二区美女 |