Marshal.AllocHGlobal メソッド

定義

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

オーバーロード

AllocHGlobal(Int32)

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

AllocHGlobal(IntPtr)

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

AllocHGlobal(Int32)

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

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

C#
[System.Security.SecurityCritical]
public static IntPtr AllocHGlobal(int cb);
C#
public static IntPtr AllocHGlobal(int cb);

パラメーター

cb
Int32

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

戻り値

IntPtr

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

属性

例外

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

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

C#
// Demonstrate how to call GlobalAlloc and
// GlobalFree using the Marshal class.
IntPtr hglobal = 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 で満たされていません。

こちらもご覧ください

適用対象

.NET 10 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

AllocHGlobal(IntPtr)

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

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

C#
[System.Security.SecurityCritical]
public static IntPtr AllocHGlobal(IntPtr cb);
C#
public static IntPtr AllocHGlobal(IntPtr cb);

パラメーター

cb
IntPtr

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

戻り値

IntPtr

新しく割り当てられたメモリへのポインター。 このメモリは、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」を参照してください。

こちらもご覧ください

適用対象

.NET 10 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0