#ALLOC(<バイト数>)
メモリの割り当てを行ないます。
構文
#ALLOC(<バイト数>)
引数
<バイト数>
割り当てたいバイト数を整数値で指定します。
解説
指定された <バイト数> のメモリ割り当てを行ない,内容をゼロに初期化します。この割り当てられたメモリ領域は,主に
REGISTERROUTINEステートメント
で宣言された DLL 関数のインタフェースに用いられます。この領域内へのアクセスは,
#PEEK
や
#POKE
で行ないます。割り当てたサイズを越えてアクセスすると,不測の事態を招きます。
#ALLOC で割り当てられたメモリ領域は,不要になったら #FREE で開放するようにしてください。開放し忘れた領域があっても,DPL の終了時にはすべて開放されます。
#ALLOC で得られたポインタ型のデータに対して
#数値
を適用することができます。このとき,ポインタそのものが 32 ビットの整数型の値に変換されます。
#ALLOC で得られたポインタ型のデータに対して
#文字列
を適用することができます。このとき,ポインタが指す領域内の文字列を結果として返します。
$MEM := #ALLOC(128);
#POKE($MEM, 0, 'S', #FILENAME);
...
#STR($MEM); -- #FILENAME と同じ結果が得られます
戻り値
メモリ領域を指すポインタ型のデータを返します。ポインタ型のデータは,#PEEK や #POKE などのごく一部の関数などでしか使用できません。<バイト数> は 0 でも構いません。<バイト数> が負のときや,メモリが割り当てられないときはナルを返します。
注意
#ALLOC で割り当てた領域を,
グローバル変数
を介して他のDPLに渡すのは危険です。それは,割り当てを行なったDPLの実行が終了してしまうと,その領域も開放されてしまうからです。
Windows プログラミングの経験のない方は使用を控えてください。
関連項目
#FREE
#PEEK
#POKE
REGISTERROUTINEステートメント