| |||
memset命令やmemcpy命令で指定分クリア・コピーできていない
| |||
|
この問題は、自分が使い始めたときに何度か陥ってしまったので 同じ轍を踏まないように書いておこうと思いました。 どういう時にコレが起きていたかと言うと変数が数値型のとき、です。 数値型変数は文字列型と違い、1要素で4バイト利用されています。 memset命令やmemcpy命令などは1バイト単位で指定しますので、 例えば、要素数5つの数値型変数(1つ4バイト)をすべて0でクリアしようとして memsetでサイズを5と指定してもクリアされません。 | |||
dim hensuu, 5 hensuu = 1, 2, 3, 4, 5 memset hensuu, 0, 5 ; コレで要素5までクリアだ…? repeat 5 mes hensuu.cnt ; 確認してみると… loop stop | |||
|
先ほど書いた様に、数値型変数をクリアしたければ、「要素数×4」分セットしてやらねばなりません。 気をつけましょう。 | |||
dim hensuu, 5 hensuu = 1, 2, 3, 4, 5 memset hensuu, 0, 5 * 4 ; この場合、直接20と書いてイイ repeat 5 mes hensuu.cnt loop stop |