Marshal.DestroyStructure Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Surcharges
| Nom | Description |
|---|---|
| DestroyStructure(IntPtr, Type) |
Obsolète.
Libère toutes les sous-structures vers laquelle pointe le bloc de mémoire non managé spécifié. |
| DestroyStructure<T>(IntPtr) |
Libère toutes les sous-structures d’un type spécifié vers lequel pointe le bloc de mémoire non managé spécifié. |
DestroyStructure(IntPtr, Type)
- Source:
- Marshal.CoreCLR.cs
- Source:
- Marshal.CoreCLR.cs
- Source:
- Marshal.cs
- Source:
- Marshal.cs
- Source:
- Marshal.CoreCLR.cs
Attention
DestroyStructure(IntPtr, Type) may be unavailable in future releases. Instead, use DestroyStructure<T>(IntPtr).
Libère toutes les sous-structures vers laquelle pointe le bloc de mémoire non managé spécifié.
public:
static void DestroyStructure(IntPtr ptr, Type ^ structuretype);
[System.Obsolete("DestroyStructure(IntPtr, Type) may be unavailable in future releases. Instead, use DestroyStructure<T>(IntPtr).")]
[System.Security.SecurityCritical]
public static void DestroyStructure(IntPtr ptr, Type structuretype);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Marshalling code for the object might not be available. Use the DestroyStructure<T> overload instead.")]
public static void DestroyStructure(IntPtr ptr, Type structuretype);
public static void DestroyStructure(IntPtr ptr, Type structuretype);
[System.Security.SecurityCritical]
public static void DestroyStructure(IntPtr ptr, Type structuretype);
[System.Runtime.InteropServices.ComVisible(true)]
public static void DestroyStructure(IntPtr ptr, Type structuretype);
[System.Security.SecurityCritical]
[System.Runtime.InteropServices.ComVisible(true)]
public static void DestroyStructure(IntPtr ptr, Type structuretype);
[<System.Obsolete("DestroyStructure(IntPtr, Type) may be unavailable in future releases. Instead, use DestroyStructure<T>(IntPtr).")>]
[<System.Security.SecurityCritical>]
static member DestroyStructure : nativeint * Type -> unit
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Marshalling code for the object might not be available. Use the DestroyStructure<T> overload instead.")>]
static member DestroyStructure : nativeint * Type -> unit
static member DestroyStructure : nativeint * Type -> unit
[<System.Security.SecurityCritical>]
static member DestroyStructure : nativeint * Type -> unit
[<System.Runtime.InteropServices.ComVisible(true)>]
static member DestroyStructure : nativeint * Type -> unit
[<System.Security.SecurityCritical>]
[<System.Runtime.InteropServices.ComVisible(true)>]
static member DestroyStructure : nativeint * Type -> unit
Public Shared Sub DestroyStructure (ptr As IntPtr, structuretype As Type)
Paramètres
- ptr
-
IntPtr
nativeint
Pointeur vers un bloc de mémoire non managé.
- structuretype
- Type
Type d’une classe mise en forme. Cela fournit les informations de disposition nécessaires pour supprimer la mémoire tampon dans le ptr paramètre.
- Attributs
Exceptions
structuretype a une disposition automatique. Utilisez plutôt séquentielle ou explicite.
Remarques
Vous pouvez utiliser cette méthode pour libérer des champs de type référence, tels que des chaînes, d’une structure non managée. Contrairement à ses champs, une structure peut être un type valeur ou un type référence. Les structures de type valeur qui contiennent des champs de type valeur (toutes les tables blittables) n’ont aucune référence dont la mémoire doit être libérée. La Marshal.StructureToPtr méthode utilise cette méthode pour empêcher les fuites de mémoire lors de la réutilisation de la mémoire occupée par une structure.
DestroyStructure appelle la fonction COM SysFreeString , qui libère à son tour une chaîne allouée.
En plus de DestroyStructure, la Marshal classe fournit deux autres méthodes de désallocation de mémoire : FreeCoTaskMem et FreeHGlobal.
Voir aussi
S’applique à
DestroyStructure<T>(IntPtr)
- Source:
- Marshal.cs
- Source:
- Marshal.cs
- Source:
- Marshal.cs
- Source:
- Marshal.cs
- Source:
- Marshal.cs
Libère toutes les sous-structures d’un type spécifié vers lequel pointe le bloc de mémoire non managé spécifié.
public:
generic <typename T>
static void DestroyStructure(IntPtr ptr);
[System.Security.SecurityCritical]
public static void DestroyStructure<T>(IntPtr ptr);
public static void DestroyStructure<T>(IntPtr ptr);
[<System.Security.SecurityCritical>]
static member DestroyStructure : nativeint -> unit
static member DestroyStructure : nativeint -> unit
Public Shared Sub DestroyStructure(Of T) (ptr As IntPtr)
Paramètres de type
- T
Type de la structure mise en forme. Cela fournit les informations de disposition nécessaires pour supprimer la mémoire tampon dans le ptr paramètre.
Paramètres
- ptr
-
IntPtr
nativeint
Pointeur vers un bloc de mémoire non managé.
- Attributs
Exceptions
T a une disposition automatique. Utilisez plutôt séquentielle ou explicite.
Remarques
Vous pouvez utiliser cette méthode pour libérer des champs de type référence, tels que des chaînes, d’une structure non managée. Contrairement à ses champs, une structure peut être un type valeur ou un type référence. Les structures de type valeur qui contiennent des champs de type valeur (tous les blittables) n’ont aucune référence dont la mémoire doit être libérée. La Marshal.StructureToPtr méthode utilise cette méthode pour empêcher les fuites de mémoire lors de la réutilisation de la mémoire occupée par une structure.
DestroyStructure appelle la fonction COM SysFreeString , qui libère à son tour une chaîne allouée.