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
DestroyStructure(IntPtr, Type) |
Obsoletos.
Libera todas las subestructuras a las que apunta el bloque de memoria no administrada especificado. |
DestroyStructure<T>(IntPtr) |
Libera todas las subestructuras de un tipo especificado a las que apunta el bloque de memoria no administrada especificado. |
DestroyStructure(IntPtr, Type)
- 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). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296520
Libera todas las subestructuras a las que apunta el bloque de memoria no administrada 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). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296520")]
[System.Security.SecurityCritical]
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). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296520")>]
[<System.Security.SecurityCritical>]
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. Proporciona la información de diseño necesaria para eliminar el búfer del parámetro ptr
.
- Atributos
Excepciones
structureType
tiene un diseño automático. Utilice, en su lugar, un diseño 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 valor (todas las que se pueden transferir en bloque de bits) 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 de DestroyStructure, la Marshal clase proporciona otros dos métodos de desasignación de memoria: FreeCoTaskMem y FreeHGlobal.
Consulte también
- FreeCoTaskMem(IntPtr)
- FreeHGlobal(IntPtr)
- Tipos que se pueden transferir en bloque de bits y que no son de tipo Blittable
Se aplica a
DestroyStructure<T>(IntPtr)
- Source:
- Marshal.cs
- Source:
- Marshal.cs
- Source:
- Marshal.cs
Libera todas las subestructuras de un tipo especificado a las que apunta el bloque de memoria no administrada 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
El tipo de estructura con formato. Proporciona la información de diseño necesaria para eliminar el búfer del parámetro ptr
.
Parámetros
- ptr
-
IntPtr
nativeint
Puntero a un bloque de memoria no administrado.
- Atributos
Excepciones
T
tiene un diseño automático. Utilice, en su lugar, un diseño 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 que se pueden transferir en bloque de bits) no tienen referencias cuya memoria se debe liberar. 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.