clearGarbage()
MemoMax: | 5 | DataMax: | 25 | |
---|---|---|---|---|
MemoCnt: | 3 | DataLen: | 23 |
0 | 1 | 2 | 3 | 4 | |
---|---|---|---|---|---|
Memo[ ]: | 19 | 5 | 10 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
---|---|---|---|---|---|---|---|---|---|---|---|
Data[ ]: | 4 | A | o | k | i | 4 | I | m | a | i | 3 |
11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
U | n | o | 4 | E | n | d | o | 3 | A | b | e |
最初に DataLen を 0 にします。
MemoCnt が 0 ならあとは何もせずに処理を終わります。
次のループは MemoCnt の回数繰り返します。
なぜでしょうか?
ここで、ガベージ(空き領域)をコレクション(集める)すると言いながら、実際には使用領域のほうをコレクションして上書きすることでガベージをなくすのだと気づけば、設問には回答できてしまいます。
ループの1回目
d に 19 をいれます。
Memo[0] に 0 をいれます。
temp[0] に Data[d + 0] をいれます。
DataLen を+1します。
temp[1] に Data[d + 1] をいれます。
DataLen を+1します。
temp[2] に Data[d + 2] をいれます。
DataLen を+1します。
temp[3] に Data[d + 3] をいれます。
DataLen を+1します。
0 | 1 | 2 | 3 | |
---|---|---|---|---|
temp [ ]: |
3 | A | b | e |
MemoMax: | 5 | DataMax: | 25 | |
---|---|---|---|---|
MemoCnt: | 3 | DataLen: | 4 |
0 | 1 | 2 | 3 | 4 | |
---|---|---|---|---|---|
Memo[ ]: | 0 | 5 | 10 |
ループの2回目
d に 5 をいれます。
Memo[1] に 4 をいれます。
temp[4] に Data[d + 0] をいれます。
DataLen を+1します。
temp[5] に Data[d + 1] をいれます。
DataLen を+1します。
temp[6] に Data[d + 2] をいれます。
DataLen を+1します。
temp[7] に Data[d + 3] をいれます。
DataLen を+1します。
temp[8] に Data[d + 4] をいれます。
DataLen を+1します。
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
---|---|---|---|---|---|---|---|---|---|
temp [ ]: |
3 | A | b | e | 4 | I | m | a | i |
MemoMax: | 5 | DataMax: | 25 | |
---|---|---|---|---|
MemoCnt: | 3 | DataLen: | 9 |
0 | 1 | 2 | 3 | 4 | |
---|---|---|---|---|---|
Memo[ ]: | 0 | 4 | 10 |
ループの3回目
d に 10 をいれます。
Memo[2] に 9 をいれます。
temp[9] に Data[d + 0] をいれます。
DataLen を+1します。
temp[10] に Data[d + 1] をいれます。
DataLen を+1します。
temp[11] に Data[d + 2] をいれます。
DataLen を+1します。
temp[12] に Data[d + 3] をいれます。
DataLen を+1します。
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
temp [ ]: |
3 | A | b | e | 4 | I | m | a | i | 3 | U | n | o |
MemoMax: | 5 | DataMax: | 25 | |
---|---|---|---|---|
MemoCnt: | 3 | DataLen: | 13 |
0 | 1 | 2 | 3 | 4 | |
---|---|---|---|---|---|
Memo[ ]: | 0 | 4 | 9 |
最後のループ
Data[ ] に temp[ ] をコピーします。
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
---|---|---|---|---|---|---|---|---|---|---|---|
Data[ ]: | 3 | A | b | e | 4 | I | m | a | i | 3 | U |
11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
n | o | o | 4 | E | n | d | o | 3 | A | b | e |
ホームに戻るボタン↓