看板 EE_DSnP 關於我們 聯絡資訊
我把 /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
Phantasnix:作業doc的要求(見Command"MTPrint"那裏)就是照升序印出 11/18 15:59
ypf791:被誤導了.... 11/18 16:00
Phantasnix:又有關print的部分都是事先寫好的,只能在回收時就排好 11/18 16:00
ypf791:size<256的recycleList打從memMgr建起來就存在了 11/18 16:01
Phantasnix:應該不能照提示add to the last MemRecycleList 去做.. 11/18 16:01