Marshal.AllocHGlobal Yöntem

Tanım

İşlemin yönetilmeyen belleğinden bellek ayırır.

Aşırı Yüklemeler

AllocHGlobal(Int32)

Belirtilen bayt sayısını kullanarak işlemin yönetilmeyen belleğinden bellek ayırır.

AllocHGlobal(IntPtr)

belirtilen bayt sayısı işaretçisini kullanarak işlemin yönetilmeyen belleğinden bellek ayırır.

AllocHGlobal(Int32)

Kaynak:
Marshal.cs
Kaynak:
Marshal.cs
Kaynak:
Marshal.cs

Belirtilen bayt sayısını kullanarak işlemin yönetilmeyen belleğinden bellek ayırır.

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

Parametreler

cb
Int32

Bellekte gerekli bayt sayısı.

Döndürülenler

IntPtr

nativeint

Yeni ayrılan belleğin işaretçisi. Bu bellek FreeHGlobal(IntPtr) yöntemi kullanılarak serbest bırakılmalıdır.

Öznitelikler

Özel durumlar

İsteği karşılamak için yeterli bellek yok.

Örnekler

Aşağıdaki örnekte AllocHGlobal yönteminin çağrılması gösterilmektedir. Bu kod örneği, Marshal sınıfı için sağlanan daha büyük bir örneğin parçasıdır.

// 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)

Açıklamalar

Önemli

Bu yerel bellek ayırıcısı, Yalnızca Windows platformundaki belirli Win32 API'leri tarafından çağrıldığında kullanılması gereken eski bir API'dir. .NET 6 veya üzerini hedeflerken yerel bellek ayırmak için tüm platformlardaki NativeMemory sınıfını kullanın. .NET 6 veya önceki sürümleri hedeflerken yerel bellek ayırmak için tüm platformlarda AllocCoTaskMem kullanın.

AllocHGlobal, Marshal sınıfındaki iki bellek ayırma yönteminden biridir. (Marshal.AllocCoTaskMem diğeridir.) Bu yöntem, Kernel32.dll'den Win32 LocalAlloc işlevini kullanıma sunar.

AllocHGlobal LocalAllocçağırdığında, ayrılan belleğin yerinde kilitlenmesine neden olan bir LMEM_FIXED bayrağı geçirir. Ayrıca, ayrılan bellek sıfır dolu değil.

Ayrıca bkz.

Şunlara uygulanır

AllocHGlobal(IntPtr)

Kaynak:
Marshal.Unix.cs
Kaynak:
Marshal.Unix.cs
Kaynak:
Marshal.Unix.cs

belirtilen bayt sayısı işaretçisini kullanarak işlemin yönetilmeyen belleğinden bellek ayırır.

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

Parametreler

cb
IntPtr

nativeint

Bellekte gerekli bayt sayısı.

Döndürülenler

IntPtr

nativeint

Yeni ayrılan belleğin işaretçisi. Bu bellek FreeHGlobal(IntPtr) yöntemi kullanılarak serbest bırakılmalıdır.

Öznitelikler

Özel durumlar

İsteği karşılamak için yeterli bellek yok.

Açıklamalar

Önemli

Bu yerel bellek ayırıcısı, Yalnızca Windows platformundaki belirli Win32 API'leri tarafından çağrıldığında kullanılması gereken eski bir API'dir. .NET 6 veya üzerini hedeflerken yerel bellek ayırmak için tüm platformlardaki NativeMemory sınıfını kullanın. .NET 6 veya önceki sürümleri hedeflerken yerel bellek ayırmak için tüm platformlarda AllocCoTaskMem kullanın.

AllocHGlobal, Marshal sınıfındaki iki bellek ayırma yönteminden biridir. (Marshal.AllocCoTaskMem diğeridir.) Bu yöntem, Kernel32.dll'den Win32 LocalAlloc işlevini kullanıma sunar.

AllocHGlobal LocalAllocçağırdığında, ayrılan belleğin yerinde kilitlenmesine neden olan bir LMEM_FIXED bayrağı geçirir. Ayrıca, ayrılan bellek sıfır dolu değil.

Örneğin kod, bkz. Marshal ve AllocHGlobal.

Ayrıca bkz.

Şunlara uygulanır