請問一下 我似乎卡在這邊
如果我mtn 一個東西 會去看_recycleList[]內是否有這樣大小的
然後會進到_recycleList[m].getList(n)
若我new 單個obj 這時候 n=0 m=0
進去getList後 應該
是去判斷裡面有沒有 _arrSize =n的 recyclelist
用ddd
在MemRecycleList<T>* ptr=this; ptr->_arrSize一開始就會等於0
ptr->_first=0; 因為一開始沒東西
如果我要free這邊 是會到getMemRecycleList(0)->pushFront(p)
這邊傳入getMemRecycleList 然後到
_recycleList[m].getList(n) 進去t的this的_arrSize 會是 0 ==n
但ptr->_first 也是0
所以會return 0
然後_recycleList[m]得到0 傳回去再access就會crash掉
在講一次
1.如果我都判斷他的_arrSize= =n 是就傳回去 不是就繼續找 找不到就傳回NULL
這樣我在new時 回傳回非NULL(因為一開始this->_arrSize=n) getmem(t)
會在空的recycleList要值---錯
我在free時 傳入的_this 可以因為this->_arrSize=0 然後傳回去使他可以去pushFront
2.如果我加上判斷 this->_first =0 就傳回NULL
這樣new他就對了 他不會跟recyclelist要
可是在free時 傳入的this->_first也=0 這樣傳回去再access會crash
不知道邏輯上我錯在哪裡 或是有哪種方法我沒想到
希望有人看的懂 ...
謝謝指教
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.251.53