精華區beta EE_DSnP 關於我們 聯絡資訊
※ 引述《ric2k1 (Ric)》之銘言: : 照我上課所說的 所有的 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 那照老師的說法 if ((_index + n) > N) 這個敘述是不是也要改一下?? 因為如果我們要 6 倍sizeof(MyClass) 而Block剩下 7 倍sizeof(MyClass) (_index + n) > N 會是false 但是仍然需要做Recycle? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.249.46
timmylin:我是呼叫getMem時就把N轉成2的次方了... 11/15 19:06
timmylin:不知道有沒有弄錯老師原本的題意??? 11/15 19:07