看板 EE_DSnP 關於我們 聯絡資訊
在MemMgr data member中有MemRecycleList<T> _recycleList[R_SIZE] 所以在裡面有一個size是256的array,存放MemRecycleList<T> 物件。 而每個MemRecycleList物件有三個data member _arraySize 這是這MemRecycleList存放物件的大小 _first 指向第一個存放的物件 _nextList 指向下一個MemRecycleList(因為我們把大小mod 256之後存放) 而回收的物件我們利用最前面四個byte做為指標只到下一個同大小的物件。 如果今天是兩個大小是0的物件 Obj1 Obj2,會這樣存放 _recycleList[0] -> MemRecycleList _arraySize = 0 _first -> Obj1 -> Obj2 _nextList -> null 這時候如果加入一個size是256的物件 Obj3 Obj4, 會變成 _recycleList[0] -> MemRecycleList _arraySize = 0 _first -> Obj1 -> Obj2 _nextList -> MemRecycleList _arraySize = 256 _first -> Obj3 -> Obj4 _nextList -> null 不是很會畫圖... 不知道這樣看不看得懂@@ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.251.153
ric2k1:謝謝! 希望配合講義與 ref code 大家可以搞懂... 04/29 22:41
hoghcmkcm:喔喔! Obj1 Obj2在記憶體上是連續的嗎? 04/29 22:46
trancewu:不是連續的 04/29 22:48
hoghcmkcm:那Obj1 要怎樣指到 Obj2? 還有怎樣知道指到底了? 謝~ 04/29 22:54
trancewu:指到底就是如果指標是null pointer 04/29 23:27