作者ric2k1 (Ric)
看板EE_DSnP
标题Re: [问题] hw4再一问
时间Sun Apr 27 20:46:49 2008
※ 引述《BattleRoyale (翔焰)》之铭言:
: while (i < R_SIZE) {
: const MemRecycleList<T>* ll = &(_recycleList[i]);
: while (ll != 0) {
: size_t s = ll->getSize();
: if (s) {
: cout << "[" << setw(3) << right << ll->_arrSize << "]
: = "<< setw(10) << left << s;
: if (++count % 4 == 0) cout << endl; }
: ll = ll->_nextList;
:
: }
: ++i; }
:
: 这是在MemMgr.h中的一小段...
: 对於ll有点不太懂@@"
:
: 在第二行它指向了 &(_recycleList[i])的位址
在 MemMgr 里面 _recycleList[] 是用 object array 来存, 所以一开始
ll = &(_recycleList[i]) 一定不会 = 0 (NULL) <== 就是存 _recycleList[i] 的位址
: 请问ll!=0是什麽意思呢? 它既然是个pointer 里面应该存的是位址
: 那什麽时间ll会=0离开while回圈呢
:
: 另外...也不太懂ll = ll->_nextList的意思
: 因为&_recycleList[i]已经代表指向现在0~255的RecycleList了
: 所以_nextList就是投影片教的指向超过255(也就是%256的recyclist罗?)
:
至於 ll->_nextList, 请参见 class MemRecycleList 的 data member,
Yes, 就是其他 %256 = i 的 recycle list.
这些 (_arrSize % 256) 相同的 lists 是用 linked list 方式串起来,
而最後会放 0 以示结尾.
That's why "while (ll != 0)"...
: 麻烦老师了<(_ _)>
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.121.132.230
1F:推 BattleRoyale:了解 谢谢教授 04/29 09:42