Marshal.DestroyStructure Método

Definición

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.

Se aplica a