作者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