パラメータ
hMem
[入力]再割り当てしたいグローバルメモリオブジェクトのハンドルを指定する。GlobalAlloc 関数または
GlobalReAlloc 関数が、このハンド
ルを返す。
dwBytes
[入力]メモリブロックの新しいサイズを、バイト単位で指定する。uFlags パラメータで GMEM_MODIFY
フラグを指定すると、このパラメー
タは無視される。
uFlags
[入力]メモリを再割り当てする方法を指定する。GMEM_MODIFY
フラグを指定すると、このパラメータはメモリオブジェクトの属性を変更
し、dwBytes パラメータは無視されまる(サイズは変更されない)。それ以外の場合、このパラメータはメモリオブジェクトの再割り当てを制御
する。
GMEM_MODIFY と共に、次の値の一方または両方を指定できる。
値
|
意味
|
GMEM_DISCARDABLE
|
無視される。この値は、16 ビット版 Windows
との互換性を保つ目的でのみ提供されている。
Win32 環境では、GlobalDiscard 関数を呼び出して、ブロックを明示的に破棄しなければならない。
16 ビット版 Windows では、GEM_MODIFY
が共に指定されている場合、破棄可能なメモリを割り当てる。このオブジェクトが既に移動可能なものとして割り当てられている場合や、GMEM_MOVEABLE
が指定されていない場合、この値は無視される |
GMEM_MOVEABLE
|
GMEM_MODIFY が共に指定されている場合、GMEM_MODIFY
は固定メモリオブジェクトを移動可能メモリオブジェクトへ変更する。
GMEM_MODIFY が指定されていない場合、GMEM_MOVEABLE を指定すると、ロック済み GMEM_MOVEABLE
メモリブロックまたは GMEM_FIXED メモリブロックを新しい固定位置へ移動できる。GMEM_MODIFY と
GMEM_MOVEABLE
のどちらも指定されていない場合、固定メモリブロックとロック済み移動可能メモリブロックは、同じ場所でのみ再割り当てできる。 |
このパラメータで GMEM_MODIFY を指定しなかった場合、次の値の任意の組み合わせを指定できる。
値
|
意味
|
GMEM_NOCOMPACT |
無視される。この値は、16 ビット版 Windows
との互換性を保つ目的でのみ提供されている。 |
GMEM_ZEROINIT |
メモリオブジェクトのサイズを拡大する場合、追加メモリの内容を 0 に初期化する。 |
戻り値
関数が成功すると、再割り当てされたメモリオブジェクトのハンドルが返る。
関数が失敗すると、NULL が返ります。拡張エラー情報を取得するには、 関数を使う。
解説
GlobalReAlloc
が移動可能メモリを再割り当てすると、そのメモリオブジェクトのハンドルが返る。ハンドルをポインタへ変換するには、
GlobalLock 関数を使う。
GlobalReAlloc
が固定メモリを再割り当てすると、返されるハンドルの値は、そのメモリブロックの最初のバイトのアドレスに等しくなる。このメ
モリにアクセスするには、戻り値を単純にポインタ型へキャストする。
GlobalReAlloc が失敗すると、元のメモリは解放されず、元のハンドルとポインタは依然として有効なままである。
Windows 95/98:このヒープマネージャは、4MB 未満のメモリブロックを想定して設計されている。1MB または
2MB より大きいメモリブロッ
クを予期している場合、代わりに VirtualAlloc または VirtualAllocEx
関数を使うことにより、パフォーマンスの大幅な低下を回避できる。
|