Marshal.DestroyStructure Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Sobrecargas
| Nombre | Description |
|---|---|
| DestroyStructure(IntPtr, Type) |
Obsoletos.
Libera todas las subestructuras a las que apunta el bloque de memoria no administrado especificado. |
| DestroyStructure<T>(IntPtr) |
Libera todas las subestructuras de un tipo especificado al que apunta el bloque de memoria no administrado especificado. |
DestroyStructure(IntPtr, Type)
- Source:
- Marshal.CoreCLR.cs
- Source:
- Marshal.CoreCLR.cs
- Source:
- Marshal.cs
- Source:
- Marshal.cs
- Source:
- Marshal.CoreCLR.cs
Precaución
DestroyStructure(IntPtr, Type) may be unavailable in future releases. Instead, use DestroyStructure<T>(IntPtr).
Libera todas las subestructuras a las que apunta el bloque de memoria no administrado especificado.
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)
Parámetros
- ptr
-
IntPtr
nativeint
Puntero a un bloque de memoria no administrado.
- structuretype
- Type
Tipo de una clase con formato. Esto proporciona la información de diseño necesaria para eliminar el búfer en el ptr parámetro .
- Atributos
Excepciones
structuretype tiene un diseño automático. Use en su lugar secuencial o explícito.
Comentarios
Puede usar este método para liberar campos de tipo de referencia, como cadenas, de una estructura no administrada. A diferencia de sus campos, una estructura puede ser un tipo de valor o un tipo de referencia. Las estructuras de tipo valor que contienen campos de tipo de valor (todas las tablas blittables) no tienen referencias cuya memoria debe liberarse. El Marshal.StructureToPtr método usa este método para evitar pérdidas de memoria al reutilizar la memoria ocupada por una estructura.
DestroyStructure llama a la función SysFreeString COM, que, a su vez, libera una cadena asignada.
Además DestroyStructurede , la Marshal clase proporciona otros dos métodos de desasignación de memoria: FreeCoTaskMem y FreeHGlobal.
Consulte también
Se aplica a
DestroyStructure<T>(IntPtr)
- Source:
- Marshal.cs
- Source:
- Marshal.cs
- Source:
- Marshal.cs
- Source:
- Marshal.cs
- Source:
- Marshal.cs
Libera todas las subestructuras de un tipo especificado al que apunta el bloque de memoria no administrado especificado.
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)
Parámetros de tipo
- T
Tipo de la estructura con formato. Esto proporciona la información de diseño necesaria para eliminar el búfer en el ptr parámetro .
Parámetros
- ptr
-
IntPtr
nativeint
Puntero a un bloque de memoria no administrado.
- Atributos
Excepciones
T tiene un diseño automático. Use en su lugar secuencial o explícito.
Comentarios
Puede usar este método para liberar campos de tipo de referencia, como cadenas, de una estructura no administrada. A diferencia de sus campos, una estructura puede ser un tipo de valor o un tipo de referencia. Las estructuras de tipo de valor que contienen campos de tipo de valor (todas las tablas blittables) no tienen referencias cuya memoria debe liberarse. El Marshal.StructureToPtr método usa este método para evitar pérdidas de memoria al reutilizar la memoria ocupada por una estructura.
DestroyStructure llama a la función SysFreeString COM, que, a su vez, libera una cadena asignada.