Marshal.DestroyStructure Método

Definición

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.

C#
[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);
C#
public static void DestroyStructure(IntPtr ptr, Type structuretype);
C#
[System.Security.SecurityCritical]
public static void DestroyStructure(IntPtr ptr, Type structuretype);
C#
[System.Runtime.InteropServices.ComVisible(true)]
public static void DestroyStructure(IntPtr ptr, Type structuretype);
C#
[System.Security.SecurityCritical]
[System.Runtime.InteropServices.ComVisible(true)]
public static void DestroyStructure(IntPtr ptr, Type structuretype);

Parámetros

ptr
IntPtr

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

Se aplica a

.NET 9 e outras versións
Produto Versións (Obsoleto)
.NET Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 (Core 1.0)
.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, 2.0, 2.1 (1.2, 1.3, 1.4, 1.5, 1.6)
UWP (10.0)

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.

C#
[System.Security.SecurityCritical]
public static void DestroyStructure<T>(IntPtr ptr);
C#
public static void DestroyStructure<T>(IntPtr ptr);

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

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.

Se aplica a

.NET 9 e outras versións
Produto Versións
.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
.NET Framework 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.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0