内部の状況を推測してみると、例えば、 ・変数A(4バイト) ・配列変数B(4バイト×10要素) ・変数C(4バイト) の順番に変数が定義されたとして、配列Bの要素が減る分には問題無いのですが、逆に増えるとなると、変数Cの後ろに移転させなければなりません。 その結果、 ・変数A(4バイト) ・空き(40バイト) ・変数C(4バイト) ・配列変数B(4バイト×10要素) というようなメモリの利用状況になります。 その後、新しく定義した変数や配列変数が、その空いた部分に収まれば良いのですが、そうでない場合は、配列変数Bのさらに後ろに置かなければならず、これを繰り返していると、空いているのに使えないメモリがどんどん増えていくという、メモリのフラグメンテーションが発生してしまいます。 昔のBASICはメモリが少なかったから、それが起きないように、要素数が変更出来ないようにしていたのかもなあ…。