Marshal.AllocHGlobal メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
プロセスのアンマネージ メモリからメモリを割り当てます。
オーバーロード
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
メモリ内の必要なバイト数。
戻り値
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
メモリ内の必要なバイト数。
戻り値
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 で満たされていません。
コード例については、「Marshal と AllocHGlobal」を参照してください。
こちらもご覧ください
適用対象
.NET