|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
ucos內(nèi)存管理看不懂!請(qǐng)大家給講解一下! |
| 作者:kk1271 欄目:嵌入式系統(tǒng) |
比如: plink = (void **)addr; pblk = (INT8U *)addr + blksize; for (i = 0; i < (nblks - 1); i++) { *plink = (void *)pblk; // plink = (void **)pblk; //這兩句得到的是同一個(gè)地址嗎? pblk = pblk + blksize; 還有: pblk = pmem->OSMemFreeList; pmem->OSMemFreeList = *(void **)pblk; //這句和pmem->OSMemFreeList = (void *)pblk有什么區(qū)別? 我理解不了這個(gè)鏈表。 還有一個(gè)問題:高手為什么寫的代碼這么的晦澀?如果像我這樣技術(shù)不夠熟練的人使用和維護(hù)這些代碼,豈不是造成了很大的障礙? * - 本貼最后修改時(shí)間:2006-12-10 17:23:50 修改者:kk1271 |
| 2樓: | >>參與討論 |
| 作者: xinzha 于 2006/12/11 11:01:00 發(fā)布:
這些代碼是不需要你來維護(hù)和管理的 這屬于內(nèi)核部分的,如果你不去作內(nèi)核,沒有必要去考慮這部分代碼。 多學(xué)一些關(guān)于指針的東西再看看這些代碼,并不是廢話。 |
|
| 3樓: | >>參與討論 |
| 作者: kk1271 于 2006/12/11 14:19:00 發(fā)布:
?? 我只是在學(xué)習(xí)!正是因?yàn)榭床欢韵胝?qǐng)高人給講解一下!我想如果有人給講解出來的話,許多像我這樣的笨人也許都會(huì)受益的吧! 不做內(nèi)核,就不應(yīng)該學(xué)習(xí)它嗎? * - 本貼最后修改時(shí)間:2006-12-11 14:22:38 修改者:kk1271 |
|
| 4樓: | >>參與討論 |
| 作者: xinzha 于 2006/12/13 19:50:00 發(fā)布:
是不一樣的。 *plink = (void *)pblk; // plink = (void **)pblk; //這兩句得到的是同一個(gè)地址嗎? 應(yīng)該是不一樣的,*plink = (void *)pblk; 改變的是plink指向的地址的內(nèi)容,而plink = (void **)pblk;改變的是plink本身。 舉個(gè)例子說,plink本來等于0x82000000,pblk等于0x83000000 *plink=(void*)pblk 是將內(nèi)存地址0x82000000內(nèi)的內(nèi)容修改為了0x83000000, plink =(void **)pblk是將plink本身的值變?yōu)?x83000000,并且聲明plink是指向指針的指針。這時(shí)候*plink 已經(jīng)不等于0x83000000了,而是等于0x83000000這個(gè)內(nèi)存地址內(nèi)所保存的內(nèi)容。 pmem->OSMemFreeList = *(void **)pblk; //這句和pmem->OSMemFreeList = (void *)pblk有什么區(qū)別? 是有區(qū)別的,pmem->OSMemFreeList = *(void **)pblk;表示 pmem->OSMemFreeList將獲得pblk內(nèi)的內(nèi)容,而(void**)的意義在于聲明pblk是指向指針的指針。 pmem->OSMemFreeList = (void *)pblk;這句話的結(jié)果就是 pmem->OSMemFreeList = pblk;而這個(gè)時(shí)候pblk變成了指針,而不是指向指針的指針。 有點(diǎn)繞。 |
|
| 5樓: | >>參與討論 |
| 作者: kk1271 于 2006/12/14 16:52:00 發(fā)布:
thanks xinzha! 我已經(jīng)看懂這個(gè)鏈表了! for (i = 0; i < (nblks - 1); i++) { *plink = (void *)pblk; //相當(dāng)于修改next中的內(nèi)容。 plink = (void **)pblk; //指向下一個(gè)next的位置 pblk = pblk + blksize; 確實(shí)是太繞了! |
|
| 6樓: | >>參與討論 |
| 作者: mb0919 于 2006/12/17 22:52:00 發(fā)布:
初學(xué)ucos 到底應(yīng)該怎么學(xué)?死看代碼嗎?哪幾個(gè)函數(shù)比較關(guān)鍵? |
|
| 7樓: | >>參與討論 |
| 作者: xinzha 于 2006/12/18 9:32:00 發(fā)布:
C語言基礎(chǔ)是關(guān)鍵 應(yīng)該說相當(dāng)大部分核心代碼都是標(biāo)準(zhǔn)C寫的,只要C的基礎(chǔ)真正過關(guān),再加上點(diǎn)操作系統(tǒng)的知識(shí)和CPU架構(gòu)方面的知識(shí),有個(gè)項(xiàng)目可以做應(yīng)該上手比較快的。 |
|
|
|
| 免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |