作者trancewu (exile me)
看板EE_DSnP
标题Re: [问题] hw4 recyclelist
时间Tue Apr 29 23:05:28 2008
记忆体应该不是连续的,
假设今天MemBlock size是50,
今天有两个Obj1 Obj2 和两个Obj1[2] Obj2[2]
而且在记忆体配置上是这样
┌───┬─────────┬───┐
│Obj1 │ Obj1[2] │用不到│MemBlock1
└───┴─────────┴───┘
┌───┬─────────┬───┐
│Obj2 │ Obj2[2] │用不到│MemBlock2
└───┴─────────┴───┘
如果我们先後删除Obj2 Obj1
这样会变成
MemMgr::_recycleList[0]中的_first指向Obj1,
Obj1前四个byte用来指向Obj2,如下
_first ┐
│
↓
┌───┬─────────┬───┐
┌─│delete│ Obj1[2] │用不到│MemBlock1
│ └───┴─────────┴───┘
│
│ ┌───┬─────────┬───┐
└→│delete│ Obj2[2] │用不到│MemBlock2
└───┴─────────┴───┘
应该是这样吧@@
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.251.153
※ 编辑: trancewu 来自: 140.112.251.153 (04/29 23:06)
1F:推 ric2k1:没错! 辛苦了. 重点是要知道如何将 Obj1 的前4个 Bytes 04/29 23:14
2F:→ ric2k1:改成 Obj2 的位址 04/29 23:17
3F:推 hoghcmkcm:喔喔!! 真是太用心回答了!! 04/30 13:45