[問題] HW4 /ref/memTest.debug的輸出疑問

看板EE_DSnP作者 (橘子)時間12年前 (2012/11/18 15:30), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串1/2 (看更多)
我把 /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

11/18 15:59, , 1F
作業doc的要求(見Command"MTPrint"那裏)就是照升序印出
11/18 15:59, 1F

11/18 16:00, , 2F
被誤導了....
11/18 16:00, 2F

11/18 16:00, , 3F
又有關print的部分都是事先寫好的,只能在回收時就排好
11/18 16:00, 3F

11/18 16:01, , 4F
size<256的recycleList打從memMgr建起來就存在了
11/18 16:01, 4F

11/18 16:01, , 5F
應該不能照提示add to the last MemRecycleList 去做..
11/18 16:01, 5F
文章代碼(AID): #1Gg8wTnB (EE_DSnP)
文章代碼(AID): #1Gg8wTnB (EE_DSnP)