作者dryman (dryman)
看板EE_DSnP
标题Re: [问题] freeArr
时间Tue Nov 24 22:41:39 2009
※ 引述《bumpwy (bumpwy)》之铭言:
: 我觉得我可能是问一个蠢问题
: 就是关於freeArrr里面,老师要我们assume that n==getRecycleIdx(..)
: 所以我就不是很知道到底要不要处理n和n+R_SIZE 这种余数的问题
: 因为我函数里面有处理余数的问题
: 还是说这样的假设有别的意思?
搞了很久还是不知道这个function该怎麽作用耶? 囧
assert(n == getRecycleIdx(n * S + SIZE_T));
对这行我有几个解读:
1. n 在注解中的定义是array size, 因此 n 是可以超过255的
2. getRecycleIdx要回传的东西我看不懂ˊˋ
字面上我直觉的解读是要回传_recycleList的index: 0-255
可是这样就和第一点矛盾了
3. 丢进去的是array的size以及array前置记忆体的长度(?)
第三点不知道该怎麽解读...为什麽我丢进去array所占的记忆体空间会回传index啊?
首先这也不一定真的是array真正所占的记忆体空间
因为在getMem中,如果丢进来的记忆体不是4/8 bit 的话
就要给稍大於array的空间让其整除於4/8 bit
若要说丢进来一个数字要回传index
那就是mod S 算出array的长度,然後再mod 255 之後回传
可是这就跟丢进来的东西一样啊...
还是说有什麽别的办法可以由记忆体算出他所在的_recycleList?
囧
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.4.234
1F:推 a3785lexx:丢进去的,是系统塞给new[]的size_t t??小弟浅见XD 11/24 22:43
2F:→ a3785lexx:我想大概就是要用後见之明去算出这个t所暗示的array 11/24 22:43
3F:→ a3785lexx:的element数量XD? 11/24 22:43
4F:→ a3785lexx:最少我这样写好像还没有出包....仅供参考XD 11/24 22:44
5F:→ dryman:是丢进去getMem之前的array size 没错... 11/24 22:53
6F:推 ric2k1:n 以及 getRecycleIdx() 都可能 > 255 11/24 23:05
7F:→ ric2k1:它应该等於存在 -SIZE_T 位置的数字 11/24 23:06
8F:→ dryman:请问老师的第二句是什麽意思啊@ @" 11/25 00:43
9F:→ dryman:-SIZE_T在哪里? <囧> 11/25 00:45
10F:推 ric2k1:就是偷偷存起来的 array 大小 11/25 00:45