LocalFree 関数 (winbase.h)

指定したローカル メモリ オブジェクトを解放し、そのハンドルを無効にします。

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

構文

HLOCAL LocalFree(
  [in] _Frees_ptr_opt_ HLOCAL hMem
);

パラメーター

[in] hMem

ローカル メモリ オブジェクトへのハンドル。 このハンドルは、LocalAlloc 関数または LocalReAlloc 関数によって返されます。 GlobalAlloc で割り当てられたメモリを解放しても安全ではありません。

戻り値

関数が成功した場合、戻り値は NULL です

関数が失敗した場合、戻り値はローカル メモリ オブジェクトへのハンドルと等しくなります。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

解放後にプロセスがメモリの検査または変更を試みると、ヒープの破損が発生したり、アクセス違反の例外 (EXCEPTION_ACCESS_VIOLATION) が生成されたりする可能性があります。

hMem パラメーターが NULL の場合、LocalFree はパラメーターを無視し、NULL を返します。

LocalFree 関数は、ロックされたメモリ オブジェクトを解放します。 ロックされたメモリ オブジェクトのロック数が 0 より大きい。 LocalLock 関数は、ローカル メモリ オブジェクトをロックし、ロック数を 1 ずつ増やします。 LocalUnlock 関数によってロックが解除され、ロック数が 1 ずつデクリメントされます。 ローカル メモリ オブジェクトのロック数を取得するには、 LocalFlags 関数を使用します。

アプリケーションがシステムのデバッグ バージョンで実行されている場合、 LocalFree はロックされたオブジェクトが解放されていることを示すメッセージを発行します。 アプリケーションをデバッグしている場合、 LocalFree はロックされたオブジェクトを解放する直前にブレークポイントに入ります。 これにより、目的の動作を確認し、実行を続行できます。

例については、「 LocalAlloc」を参照してください。

要件

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

関連項目

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

GlobalFree

LocalAlloc

LocalFlags

LocalLock

LocalReAlloc

LocalUnlock

メモリ管理関数