Win32API: GlobalAlloc

指定されたバイト数のメモリを、ヒープ領域から確保します。


定義
Declare Function GlobalAlloc Lib "kernel32" _
   (uFlags As DWord, _
    dwBytes As DWord) As HGLOBAL
uFlags
メモリ確保の方法を、以下の定数の組み合わせで指定します。
定数説明
GHND移動可能メモリを確保し、その内容を 0 で埋め尽くします。GMEM_MOVEABLE フラグと GMEM_ZEROINIT フラグの組み合わせです。
GMEM_FIXED固定メモリを確保します。戻り値はメモリ ブロックへのポインタになります。
GMEM_MOVEABLE移動可能メモリを確保します。戻り値はメモリ オブジェクトのハンドルになります。
GMEM_ZEROINIT確保したメモリの内容を、0 で初期化します。
GPTR固定メモリを確保し、その内容を 0 で埋め尽くします。GMEM_FIXED フラグと GMEM_ZEROINIT フラグの組み合わせです。

dwBytes
確保するメモリのバイト数を指定します。uFlags パラメータに GMEM_MOVEABLE フラグを指定し、このパラメータに 0 を指定したときは、破棄マークが付けられたメモリ オブジェクトが作成されます(後にメモリを確保する場合などに有効です)。

戻り値

固定メモリを確保したときは、メモリ ブロックへのポインタが返ります。
移動可能メモリを確保したときは、メモリ オブジェクトのハンドルが返ります。
関数が失敗すると、0 が返ります。

解説

作成したメモリ オブジェクトが不要になったときは、GlobalFree関数を使用して破棄して下さい。

dwBytes パラメータで指定されたバイト数より、実際に確保されたバイト数のほうが大きい場合があります。実際に確保されたバイト数を調べるには、GlobalSize関数を使用して下さい。

固定メモリを確保したときは、戻り値のポインタが示すメモリにアクセスすることが可能です。
移動可能メモリを確保したときは、メモリ オブジェクトのハンドルを元に、GlobalLock関数を使用してメモリ ブロックへのポインタを取得する必要があります。

メモリの再確保を行う場合は、GlobalReAlloc関数を使用して下さい。

環境情報

インクルード ファイル: api_system.sbp 内で定義済み
DLLファイル: kernel32.dll


GlobalFree関数GlobalLock関数GlobalReAlloc関数GlobalSize関数