GlobalReAlloc 関数 (winbase.h)

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

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

構文

DECLSPEC_ALLOCATOR HGLOBAL GlobalReAlloc(
  [in] _Frees_ptr_ HGLOBAL hMem,
  [in] SIZE_T              dwBytes,
  [in] UINT                uFlags
);

パラメーター

[in] hMem

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

[in] dwBytes

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

[in] uFlags

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

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

意味
GMEM_MOVEABLE
0x0002
移動可能なメモリを割り当てます。

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

 

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

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

戻り値

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

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

解説

GlobalReAlloc が移動可能なオブジェクトを再割り当てする場合、戻り値はメモリ オブジェクトへのハンドルです。 ハンドルをポインターに変換するには、 GlobalLock 関数を使用します。

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

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

要件

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

関連項目

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

GlobalAlloc

GlobalDiscard

GlobalLock

メモリ管理関数