10/09/12 02:28:03
>>651の場合は、
test()関数の1つ目のローカル変数"test"はスタックの先頭に入ってて
Xはその場所を覚えさせられるんだけど
MsgBox呼ぶのにStr$使ってるから、その中の1つ目のローカル変数"Str$"に
Xの参照先の値を上書きされてると思う。
最後のMsgBoxでaをMakeStrで括って実行したらどうなるかちょっと見てみよう
(手元に環境がないのでどうなるかは確認してないです。単に落ちるかも)。
で、String型にした場合はどうなるかというと、>>668が正しければ
Xの参照先がグローバル領域のような場所になるから、
関数から抜けたあとも領域が上書きされずに残ってた
という状況になったものかと思う。