Marshal.ReAllocHGlobal(IntPtr, IntPtr) メソッド

定義

以前に AllocHGlobal(IntPtr)で割り当てられたメモリ ブロックのサイズを変更します。

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

パラメーター

pv
IntPtr

nativeint

AllocHGlobal(IntPtr)で割り当てられたメモリへのポインター。

cb
IntPtr

nativeint

割り当てられたブロックの新しいサイズ。 これはポインターではありません。これは要求しているバイト数であり、IntPtr型にキャストされます。 ポインターを渡すと、サイズとして扱われます。

戻り値

IntPtr

nativeint

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

属性

例外

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

注釈

大事な

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

ReAllocHGlobal は、Marshal クラスの 2 つのメモリ再割り当て API メソッドの 1 つです。 (Marshal.ReAllocCoTaskMem はもう一方です。

このメソッドは、Kernel32.dllから Win32 GlobalReAlloc 関数を公開します。 返されるポインターは、元のポインターとは異なる場合があります。 異なる場合は、元のメモリ ブロックの内容が新しいブロックにコピーされ、元のメモリ ブロックが解放されました。

適用対象

こちらもご覧ください