GlobalFree 関数 (winbase.h)
指定したグローバル メモリ オブジェクトを解放し、ハンドルを無効にします。
構文
HGLOBAL GlobalFree(
[in] _Frees_ptr_opt_ HGLOBAL hMem
);
パラメーター
[in] hMem
グローバル メモリ オブジェクトへのハンドル。 このハンドルは、GlobalAlloc 関数または GlobalReAlloc 関数によって返されます。 LocalAlloc で割り当てられたメモリを解放しても安全ではありません。
戻り値
関数が成功した場合、戻り値は NULL です。
関数が失敗した場合、戻り値はグローバル メモリ オブジェクトへのハンドルと等しくなります。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
解放後にプロセスがメモリを調べたり変更したりすると、ヒープの破損が発生したり、アクセス違反の例外 (EXCEPTION_ACCESS_VIOLATION) が生成されたりする可能性があります。
GlobalFree 関数は、ロックされたメモリ オブジェクトを解放します。 ロックされたメモリ オブジェクトのロック数が 0 より大きい。 GlobalLock 関数は、グローバル メモリ オブジェクトをロックし、ロック数を 1 ずつ増やします。 GlobalUnlock 関数によってロックが解除され、ロック数が 1 ずつデクリメントされます。 グローバル メモリ オブジェクトのロック数を取得するには、 GlobalFlags 関数を使用します。
アプリケーションがシステムのデバッグ バージョンで実行されている場合、 GlobalFree は、ロックされたオブジェクトが解放されていることを示すメッセージを発行します。 アプリケーションをデバッグする場合、 GlobalFree はロックされたオブジェクトを解放する直前にブレークポイントに入ります。 これにより、目的の動作を確認し、実行を続行できます。
例
例については、「 GlobalAlloc」を参照してください。
要件
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | winbase.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |