LocalAlloc

ヒープから指定したバイト数を確保する。(LocalAlloc)

LocalAlloc uFlags, uBytes

uFlags : [int] 
uBytes : [int] 確保するバイト数。この引数が 0 で、かつ uFlags 引数に LMEM_MOVEABLE が指定された場合、関数は破棄済みとマークされたメモリオブジェクトのハンドルを返す。

(プラグイン / モジュール : kernel32.dll)

解説

ヒープから指定したバイト数を確保する。(LocalAlloc)

[戻り値]
関数が成功した場合、戻り値は新しく確保されたメモリオブジェクトのハンドルである。関数が失敗した場合、戻り値は NULL
である。拡張エラー情報を取得するには GetLastError を呼ぶ。

[備考]
Windows のメモリ管理にはローカルヒープとグローバルヒープの区別はない。したがって LocalAllocGlobalAlloc
は本質的に同一である。可動メモリフラグ LHND、LMEM_MOVABLE、NONZEROLHND
は不要なオーバーヘッドを加え、安全に使用するにはロックが必要となる。これらはドキュメントで明示的に使うよう指示されていない限り避けるべきである。新しいアプリケーションは、ドキュメントでローカル関数を使うよう明示的に指示されていない限り、ヒープ関数を使うべきである。例えば、一部の
Windows 関数は LocalFree
で解放しなければならないメモリを確保する。要求を満たす十分な空き領域がヒープにない場合、LocalAlloc は NULL
を返す。NULL はエラーを示すため、仮想アドレスの 0 が確保されることはない。したがって NULL
ポインタの使用は容易に検出できる。LocalAlloc
が成功した場合、少なくとも要求された量を確保する。確保された量が要求量より大きい場合、プロセスはその全量を使用できる。実際に確保されたバイト数を調べるには
LocalSize 関数を使う。メモリを解放するには LocalFree 関数を使う。LocalAlloc で確保したメモリを
GlobalFree で解放するのは安全ではない。

情報

プラグイン / モジュールkernel32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の kernel32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_kernel32_gen2.hs