作者stmharry (橘子)
看板EE_DSnP
標題[問題] HW4 /ref/memTest.debug的輸出疑問
時間Sun Nov 18 15:30:35 2012
我把 /tests/run 的內容改了一下,拿去跑reference program
(簡單來說就是把dofile都拿去餵 /ref/memTest.debug)
可是對於某處的MTPrint結果有一點疑問。
我把output檔案放在這裡:
http://tinyurl.com/buw7szf (2.54MB,可以自己跑)
---問題開始---
理論上回收的時候,先回收的size,會先住進linked list吧!
比如:
Recycling 0x64acc80 to _recycleList[418]
...(some other stuff)
Recycling 0x66af4f0 to _recycleList[162]
那又因418 % 256 = 162 % 256 = 162,他們會住進同一個linked list,變成
MemMgr::_recycleList[162]
|
v
MemRecycleList<T> ┌--> MemRecycleList<T>
_arrSize = 418 | _arrSize = 162
_first = 0x64acc80 | _first = 0x66af4f0
_nextList --------------┘ _nextList --------------> NULL
所以使用MTPrint指令印出Recycle list的時候,traverse應該會先跑過418,再跑到162
可是...reference跑出來的結果竟然是162先印,再印418...
(請參考檔案第95282行末及95283行行首)
這個相異處我卡了好久~"~
請問各位板大有任何解釋嗎?Q____Q
謝謝認真看完的人^____^
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.245.223
1F:→ Phantasnix:作業doc的要求(見Command"MTPrint"那裏)就是照升序印出 11/18 15:59
2F:推 ypf791:被誤導了.... 11/18 16:00
3F:→ Phantasnix:又有關print的部分都是事先寫好的,只能在回收時就排好 11/18 16:00
4F:→ ypf791:size<256的recycleList打從memMgr建起來就存在了 11/18 16:01
5F:→ Phantasnix:應該不能照提示add to the last MemRecycleList 去做.. 11/18 16:01