Marshal.AllocHGlobal Méthode

Définition

Alloue de la mémoire non managée du processus.

Surcharges

AllocHGlobal(Int32)

Alloue de la mémoire non managée du processus à l’aide du nombre spécifié d’octets.

AllocHGlobal(IntPtr)

Alloue de la mémoire non managée du processus en utilisant le pointeur vers le nombre spécifié d’octets.

AllocHGlobal(Int32)

Source:
Marshal.cs
Source:
Marshal.cs
Source:
Marshal.cs

Alloue de la mémoire non managée du processus à l’aide du nombre spécifié d’octets.

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

Paramètres

cb
Int32

Nombre requis d’octets en mémoire.

Retours

IntPtr

Pointeur vers la mémoire nouvellement allouée. Cette mémoire doit être libérée à l’aide de la méthode FreeHGlobal(IntPtr).

Attributs

Exceptions

La mémoire est insuffisante pour répondre à la demande.

Exemples

L’exemple suivant illustre l’appel de la méthode AllocHGlobal. Cet exemple de code fait partie d’un exemple plus large fourni pour la classe Marshal.

C#
// Demonstrate how to call GlobalAlloc and
// GlobalFree using the Marshal class.
IntPtr hglobal = Marshal.AllocHGlobal(100);
Marshal.FreeHGlobal(hglobal);

Remarques

Important

Cet allocateur de mémoire native est une API héritée qui doit être utilisée exclusivement lorsqu’elle est appelée par des API Win32 spécifiques sur la plateforme Windows. Lorsque vous ciblez .NET 6 ou version ultérieure, utilisez la classe NativeMemory sur toutes les plateformes pour allouer de la mémoire native. Lorsque vous ciblez .NET 6 ou une version antérieure, utilisez AllocCoTaskMem sur toutes les plateformes pour allouer de la mémoire native.

AllocHGlobal est l’une des deux méthodes d’allocation de mémoire dans la classe Marshal. ( est l’autre.) Cette méthode expose la fonction de LocalAlloc win32 de Kernel32.dll.

Lorsque AllocHGlobal appelle LocalAlloc, il transmet un indicateur de LMEM_FIXED, ce qui entraîne le verrouillage de la mémoire allouée. En outre, la mémoire allouée n’est pas remplie à zéro.

Voir aussi

S’applique à

.NET 10 et autres versions
Produit Versions
.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)

Source:
Marshal.Unix.cs
Source:
Marshal.Unix.cs
Source:
Marshal.Unix.cs

Alloue de la mémoire non managée du processus en utilisant le pointeur vers le nombre spécifié d’octets.

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

Paramètres

cb
IntPtr

Nombre requis d’octets en mémoire.

Retours

IntPtr

Pointeur vers la mémoire nouvellement allouée. Cette mémoire doit être libérée à l’aide de la méthode FreeHGlobal(IntPtr).

Attributs

Exceptions

La mémoire est insuffisante pour répondre à la demande.

Remarques

Important

Cet allocateur de mémoire native est une API héritée qui doit être utilisée exclusivement lorsqu’elle est appelée par des API Win32 spécifiques sur la plateforme Windows. Lorsque vous ciblez .NET 6 ou version ultérieure, utilisez la classe NativeMemory sur toutes les plateformes pour allouer de la mémoire native. Lorsque vous ciblez .NET 6 ou une version antérieure, utilisez AllocCoTaskMem sur toutes les plateformes pour allouer de la mémoire native.

AllocHGlobal est l’une des deux méthodes d’allocation de mémoire dans la classe Marshal. ( est l’autre.) Cette méthode expose la fonction de LocalAlloc win32 de Kernel32.dll.

Lorsque AllocHGlobal appelle LocalAlloc, il transmet un indicateur de LMEM_FIXED, ce qui entraîne le verrouillage de la mémoire allouée. En outre, la mémoire allouée n’est pas remplie à zéro.

Pour obtenir un exemple de code, consultez Marshal et AllocHGlobal.

Voir aussi

S’applique à

.NET 10 et autres versions
Produit Versions
.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