看板 EE_DSnP 關於我們 聯絡資訊
我們在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)