[心得] HW4 slotCnt freeSpace

楼主: math120908 (小小郭)   2012-11-25 22:38:38
大家都没问我心中的疑问实在是太困扰了
好在我姊很威猛 翻了一下她当年report就解决我的疑惑了zzz
我来简单分享一下心得
写完就不要理我啦 没写的就可以参考一下XD
不然就当是给不知道会不会有的未来修课的学弟妹们心得= =+
主要就是几个词的定义
slotCnt
这个最机车了 code原本里面写number of slots in use
但其实他的意思是 allocate的slots数量!!
所以slotCnt是可能包含有洞的slot的
slotCnt = #EMPTY_SLOT + #non-EMPTY_SLOT
总之就是你在做slot部分的linear search的时候的upper bound啦~
freeSpace v.s. available_space
freeSpace 指的是 整个data space空白的地方
基本上来说
data space包含data + slot[0]
所以在宣告data的时候才会是
data[MAX_SPACE - DPFIXED]
slot[1]
其实slot感觉起来应该要是个指标指向data末端
不过这样写是为了方便 + slot会变成常数指标
那所谓的freeSpace又是什么呢
一开始的时候是 MAX_SPACE - DPFIXED + sizeof(slot) //slot[0]那格也要算喔>.^
之后加新的record会 - recordSize - sizeof(slot)
删除record会 + recordSize + sizeof(slot)
也就是如果slot有洞 他是会把洞算在freespace里的!!
available_space 指的则是 "剩下可以放新的record的空间"
所以自然 slot有洞的地方就不会算到了
available_space = freespace - sizeof(slot_t)*#non-Empty_slot.
Notice: 要注意的是 如果slot全部是满的又会怎样呢 (#Empty_slot = 0)
当下次要新增一个record的时候
available_space只有放record空间是不够的
因为还必须要有空间放slot
所以这种情况下available_space其实是 = freespace - sizeof(slot_t)
以上大概是我写这次作业的心得...
//我可以不用交report了吗(大误
作者: paul112004 (Time to say goodbye)   2012-11-25 23:20:00
推!
作者: rock1246 (Rokya)   2012-11-26 04:23:00
大推
作者: andy74139 (月^4)   2012-11-26 10:28:00
推!! 写完之后才发现slotCnt不对,又要去改>"<
作者: vb8821 (Le Fond)   2012-11-26 21:28:00
大推! 小疑问,available的地方是不是有误打,全满的话,Empty-slot = 0 ?
作者: vincimrs (green)   2012-11-27 16:04:00
推推
楼主: math120908 (小小郭)   2012-11-27 20:04:00
喔对 感谢楼上上XD

Links booklink

Contact Us: admin [ a t ] ucptt.com