このドキュメントはアーカイブされており、メンテナンスされていません。

Marshal.FreeHGlobal メソッド

以前に AllocHGlobal を使用してプロセスのアンマネージ メモリから割り当てられたメモリを解放します。

名前空間: System.Runtime.InteropServices
アセンブリ: mscorlib (mscorlib.dll 内)

public static void FreeHGlobal (
	IntPtr hglobal
)
public static void FreeHGlobal (
	IntPtr hglobal
)
public static function FreeHGlobal (
	hglobal : IntPtr
)

パラメータ

hglobal

AllocHGlobal への元の一致する呼び出しによって返されたハンドル。

FreeHGlobal を使用すると、AllocHGlobalReAllocHGlobal、またはこれらに相当するアンマネージ API メソッドによって割り当てられたメモリをグローバル ヒープから解放できます。hglobal パラメータが null 参照 (Visual Basic では Nothing) の場合、このメソッドは何も実行しません。

FreeHGlobal は Kernel32.DLL の LocalFree 関数を公開します。この関数はすべてのバイトを解放し、hglobal パラメータが示すメモリはその後使用できなくなります。LocalFree の詳細については、MSDN ライブラリを参照してください。

Marshal クラスには、メモリ割り当て解除 API のメソッドとして、FreeHGlobal のほか、DestroyStructureFreeCoTaskMem が用意されています。

メモメモ

このメソッドは SecurityAction.LinkDemand を使用して、信頼関係のないコードからの呼び出しを防ぎます。SecurityPermissionAttribute.UnmanagedCode アクセス許可は、直前の呼び出し元にのみ要求されます。信頼性が一部しか確認されていないコードから呼び出すことができるコードの場合、ユーザー入力を検証せずに Marshal クラスに渡すことは避けてください。LinkDemand メンバの使用に関する重要な制約事項については、「Demand と LinkDemand」を参照してください。

Windows 95, Windows 98, Windows 98 Second Edition, Windows Millennium Edition プラットフォームメモ : FreeHGlobal に無効なハンドル値を渡すと、ArgumentException が発生します。

FreeHGlobal メソッドを呼び出すコード例を次に示します。このコード例は、Marshal クラスのトピックで取り上げているコード例の一部分です。

// Demonstrate how to call GlobalAlloc and 
// GlobalFree using the Marshal class.
IntPtr hglobal = Marshal.AllocHGlobal(100);
Marshal.FreeHGlobal(hglobal);

マネージ String クラスの内容をアンマネージ メモリに変換し、完了時にアンマネージ メモリを破棄する方法を次のコード例に示します。

  • SecurityPermission  (アンマネージ コードを呼び出すために必要なアクセス許可)。 UnmanagedCode (関連する列挙体)。LinkDemand (セキュリティ アクション)。

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。

.NET Framework

サポート対象 : 2.0、1.1、1.0

.NET Compact Framework

サポート対象 : 2.0
表示: