作者dryman (dryman)
看板EE_DSnP
標題Re: [問題] freeArr
時間Tue Nov 24 22:41:39 2009
※ 引述《bumpwy (bumpwy)》之銘言:
: 我覺得我可能是問一個蠢問題
: 就是關於freeArrr裡面,老師要我們assume that n==getRecycleIdx(..)
: 所以我就不是很知道到底要不要處理n和n+R_SIZE 這種餘數的問題
: 因為我函數裡面有處理餘數的問題
: 還是說這樣的假設有別的意思?
搞了很久還是不知道這個function該怎麼作用耶? 囧
assert(n == getRecycleIdx(n * S + SIZE_T));
對這行我有幾個解讀:
1. n 在註解中的定義是array size, 因此 n 是可以超過255的
2. getRecycleIdx要回傳的東西我看不懂ˊˋ
字面上我直覺的解讀是要回傳_recycleList的index: 0-255
可是這樣就和第一點矛盾了
3. 丟進去的是array的size以及array前置記憶體的長度(?)
第三點不知道該怎麼解讀...為什麼我丟進去array所佔的記憶體空間會回傳index啊?
首先這也不一定真的是array真正所佔的記憶體空間
因為在getMem中,如果丟進來的記憶體不是4/8 bit 的話
就要給稍大於array的空間讓其整除於4/8 bit
若要說丟進來一個數字要回傳index
那就是mod S 算出array的長度,然後再mod 255 之後回傳
可是這就跟丟進來的東西一樣啊...
還是說有什麼別的辦法可以由記憶體算出他所在的_recycleList?
囧
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.4.234
1F:推 a3785lexx:丟進去的,是系統塞給new[]的size_t t??小弟淺見XD 11/24 22:43
2F:→ a3785lexx:我想大概就是要用後見之明去算出這個t所暗示的array 11/24 22:43
3F:→ a3785lexx:的element數量XD? 11/24 22:43
4F:→ a3785lexx:最少我這樣寫好像還沒有出包....僅供參考XD 11/24 22:44
5F:→ dryman:是丟進去getMem之前的array size 沒錯... 11/24 22:53
6F:推 ric2k1:n 以及 getRecycleIdx() 都可能 > 255 11/24 23:05
7F:→ ric2k1:它應該等於存在 -SIZE_T 位置的數字 11/24 23:06
8F:→ dryman:請問老師的第二句是什麼意思啊@ @" 11/25 00:43
9F:→ dryman:-SIZE_T在哪裡? <囧> 11/25 00:45
10F:推 ric2k1:就是偷偷存起來的 array 大小 11/25 00:45