LocalReAlloc 関数 (winbase.h)

指定したローカル メモリ オブジェクトのサイズまたは属性を変更します。 サイズは増減できます。

メモ ローカル関数はオーバーヘッドが大きく、他のメモリ管理機能よりも機能が少なくなります。 新しいアプリケーションでは、ローカル 関数 を使用する必要があるとドキュメントに記載されていない限り、ヒープ関数を使用する必要があります。 詳細については、「 グローバル関数とローカル関数」を参照してください。
 

構文

DECLSPEC_ALLOCATOR HLOCAL LocalReAlloc(
  [in] _Frees_ptr_opt_ HLOCAL hMem,
  [in] SIZE_T                 uBytes,
  [in] UINT                   uFlags
);

パラメーター

[in] hMem

再割り当てするローカル メモリ オブジェクトへのハンドル。 このハンドルは、LocalAlloc 関数または LocalReAlloc 関数によって返されます。

[in] uBytes

メモリ ブロックの新しいサイズ (バイト単位)。 uFlags でLMEM_MODIFYが指定されている場合、このパラメーターは無視されます。

[in] uFlags

再割り当てオプション。 LMEM_MODIFYを指定した場合、関数はメモリ オブジェクトの属性のみを変更します (uBytes パラメーターは無視されます)。それ以外の場合、関数はメモリ オブジェクトを再割り当てします。

必要に応じて、 LMEM_MODIFY と次の値を組み合わせることができます。

説明
LMEM_MOVEABLE
0x0002
固定メモリまたは移動可能メモリを割り当てます。

メモリがロック されたLMEM_MOVEABLE メモリ ブロックまたは LMEM_FIXED メモリ ブロックであり、このフラグが指定されていない場合、メモリは所定の場所でのみ再割り当てできます。

 

このパラメーターで LMEM_MODIFYを指定しない場合は、次の値を使用できます。

説明
LMEM_ZEROINIT
0x0040
メモリ オブジェクトのサイズが大きくなる場合は、追加のメモリコンテンツを 0 に初期化します。

戻り値

関数が成功した場合、戻り値は再割り当てされたメモリ オブジェクトへのハンドルです。

関数が失敗した場合は、返される値は NULL です。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

LocalReAlloc が失敗した場合、元のメモリは解放されず、元のハンドルとポインターは引き続き有効です。

LocalReAlloc が固定オブジェクトを再割り当てする場合、返されるハンドルの値はメモリ ブロックの最初のバイトのアドレスです。 メモリにアクセスするために、プロセスは単に戻り値をポインターにキャストできます。

要件

   
サポートされている最小のクライアント Windows XP [デスクトップ アプリ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー winbase.h (Windows.h を含む)
Library Kernel32.lib
[DLL] Kernel32.dll

関連項目

グローバル関数とローカル関数

LocalAlloc

LocalFree

LocalLock

メモリ管理関数