次の方法で共有


Marshal.AllocHGlobal メソッド

定義

プロセスのアンマネージ メモリからメモリを割り当てます。

オーバーロード

AllocHGlobal(Int32)

指定したバイト数を使用して、プロセスのアンマネージ メモリからメモリを割り当てます。

AllocHGlobal(IntPtr)

指定したバイト数へのポインターを使用して、プロセスのアンマネージ メモリからメモリを割り当てます。

AllocHGlobal(Int32)

ソース:
Marshal.cs
ソース:
Marshal.cs
ソース:
Marshal.cs

指定したバイト数を使用して、プロセスのアンマネージ メモリからメモリを割り当てます。

public:
 static IntPtr AllocHGlobal(int cb);
[System.Security.SecurityCritical]
public static IntPtr AllocHGlobal (int cb);
public static IntPtr AllocHGlobal (int cb);
[<System.Security.SecurityCritical>]
static member AllocHGlobal : int -> nativeint
static member AllocHGlobal : int -> nativeint
Public Shared Function AllocHGlobal (cb As Integer) As IntPtr

パラメーター

cb
Int32

メモリ内の必要なバイト数。

戻り値

IntPtr

nativeint

新しく割り当てられたメモリへのポインター。 このメモリは、FreeHGlobal(IntPtr) メソッドを使用して解放する必要があります。

属性

例外

要求を満たすのに十分なメモリがありません。

次の例では、AllocHGlobal メソッドの呼び出しを示します。 このコード例は、Marshal クラスに提供されるより大きな例の一部です。

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

注釈

大事な

このネイティブ メモリ アロケーターは、Windows プラットフォーム上の特定の Win32 API によって呼び出されたときに排他的に使用する必要があるレガシ API です。 .NET 6 以降を対象とする場合は、すべてのプラットフォームで NativeMemory クラスを使用してネイティブ メモリを割り当てます。 .NET 6 以前を対象とする場合は、すべてのプラットフォームで AllocCoTaskMem を使用してネイティブ メモリを割り当てます。

AllocHGlobal は、Marshal クラスの 2 つのメモリ割り当て方法のいずれかです。 (Marshal.AllocCoTaskMem はもう一方です。このメソッドは、Kernel32.dllから Win32 LocalAlloc 関数を公開します。

LocalAlloc AllocHGlobal 呼び出すと、LMEM_FIXED フラグが渡され、割り当てられたメモリが所定の位置にロックされます。 また、割り当てられたメモリは 0 で満たされていません。

こちらもご覧ください

適用対象

AllocHGlobal(IntPtr)

ソース:
Marshal.Unix.cs
ソース:
Marshal.Unix.cs
ソース:
Marshal.Unix.cs

指定したバイト数へのポインターを使用して、プロセスのアンマネージ メモリからメモリを割り当てます。

public:
 static IntPtr AllocHGlobal(IntPtr cb);
[System.Security.SecurityCritical]
public static IntPtr AllocHGlobal (IntPtr cb);
public static IntPtr AllocHGlobal (IntPtr cb);
[<System.Security.SecurityCritical>]
static member AllocHGlobal : nativeint -> nativeint
static member AllocHGlobal : nativeint -> nativeint
Public Shared Function AllocHGlobal (cb As IntPtr) As IntPtr

パラメーター

cb
IntPtr

nativeint

メモリ内の必要なバイト数。

戻り値

IntPtr

nativeint

新しく割り当てられたメモリへのポインター。 このメモリは、FreeHGlobal(IntPtr) メソッドを使用して解放する必要があります。

属性

例外

要求を満たすのに十分なメモリがありません。

注釈

大事な

このネイティブ メモリ アロケーターは、Windows プラットフォーム上の特定の Win32 API によって呼び出されたときに排他的に使用する必要があるレガシ API です。 .NET 6 以降を対象とする場合は、すべてのプラットフォームで NativeMemory クラスを使用してネイティブ メモリを割り当てます。 .NET 6 以前を対象とする場合は、すべてのプラットフォームで AllocCoTaskMem を使用してネイティブ メモリを割り当てます。

AllocHGlobal は、Marshal クラスの 2 つのメモリ割り当て方法のいずれかです。 (Marshal.AllocCoTaskMem はもう一方です。このメソッドは、Kernel32.dllから Win32 LocalAlloc 関数を公開します。

LocalAlloc AllocHGlobal 呼び出すと、LMEM_FIXED フラグが渡され、割り当てられたメモリが所定の位置にロックされます。 また、割り当てられたメモリは 0 で満たされていません。

コード例については、「MarshalAllocHGlobal」を参照してください。

こちらもご覧ください

適用対象