作者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)