推 timmylin:喔喔,我原本弄錯了,謝謝老師 11/14 22:40
※ 引述《timmylin (Noname)》之銘言:
: 標題: [問題] HW3的一點問題......
: 時間: Sun Nov 13 23:28:32 2005
:
:
:
:
: 請問一下,在實作Free Memory的相關函式時,對於Recycle的作法
:
: 如果我釋放一個Size = 7的Array,那是要把它當成Size = 4處理嗎??
: (因為按照作業的方式,Recycle List只有 1 2 4 8 ...的分類)
:
: 抱歉上課時這邊沒有聽的很清楚......
:
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 218.170.155.145
: → timmylin:阿對了,應該也要把它該拆開... 11/14 00:05
: → timmylin:我是在想如果他原先是從Rycycle List Size = 8出來 11/14 00:07
: → timmylin:那就會浪費空間了 11/14 00:07
照我上課所說的 所有的 memory allocation 大小應該要合 recycle list
規定的大小相符
也就是說 如果 recycle list 只有 1 2 4 8 的分類 由 memory manager 取得
的 memory 大小應該也只有 1 2 4 8 才對
所以 如果你要 ---
MyClass* aa = new MyClass[6];
你應該跟 memory manager 要 8 倍 sizeof(MyClass) 的記憶體
而不是 7 倍 (再麼樣也不會是 6 倍吧)
會遇到 recycle 7 倍 sizeof(MyClass)的情況只有當在 memory block 只剩 7 個
sizeof(MyClass) 的記憶體 而所要的卻超過 7
在這種情況下則必須新開一個 memory block 且把剩下的 7 拆成 (1, 2, 4)
來 recycle
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.121.137.236