作者yea107 (ㄚ隆)
看板EE_DSnP
標題[問題] pushFront() 和 popFront()
時間Wed May 6 15:27:20 2009
我們在freeArr(T* p)的地方
依照上面的指示...
//2. Get 'p' which points to the beginning of the memory element
and is the memory address to recycle.
理論上下一個動作好像就是要把p傳入長度為n的recycleList裡
使用的是pushFront(T* p)
這麼說起來我們的_first似乎會指到的是array的第一個element
也就是(p+SIZE_T)的位置
可是它前面還有一個SIZE_T的長度阿???
這塊記憶體不需要被算進去嗎???
這樣我們在使用popFront()的時候吐出去的pointer也是指到第一個element嗎??
還是要指到第一個(element-SIZE_T)的地方呢??
(提示上面是說指到第一個element)
這麼說起來當我們在class memMgr 裡頭的 T* getMem(size_t t)時
檢查符合大小的_recycleList[n] (假設有的話)
就呼叫_recycleList[n]的popFront()吐出一個T的pointer指向之前存的某個
array的第一個element
而這個pointer最終會回傳給overload過的 new[]
只是最後在回傳給new[]的時候這個pointer的值不是又會被加上一個SIZE_T大小嗎
所以最後就會指在 p + SIZE_T + SIZE_T 的位置上
這樣好像有點怪怪的
不知道有沒有人知道我在問什麼...
觀念好像不太清楚...
-------------------------------------------
總覺得這整份作業一直在做暴力轉換 Orz
-------------------------------------------
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.4.235
※ 編輯: yea107 來自: 140.112.4.235 (05/06 15:32)