Marshal.DestroyStructure Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Sobrecargas
| Nome | Description |
|---|---|
| DestroyStructure(IntPtr, Type) |
Obsoleto.
Libera todas as subestruturas para as quais o bloco de memória não gerenciado especificado aponta. |
| DestroyStructure<T>(IntPtr) |
Libera todas as subestruturas de um tipo especificado para o qual o bloco de memória não gerenciado especificado aponta. |
DestroyStructure(IntPtr, Type)
- Origem:
- Marshal.CoreCLR.cs
- Origem:
- Marshal.CoreCLR.cs
- Origem:
- Marshal.cs
- Origem:
- Marshal.cs
- Origem:
- Marshal.CoreCLR.cs
Cuidado
DestroyStructure(IntPtr, Type) may be unavailable in future releases. Instead, use DestroyStructure<T>(IntPtr).
Libera todas as subestruturas para as quais o bloco de memória não gerenciado especificado aponta.
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
Um ponteiro para um bloco de memória não gerenciado.
- structuretype
- Type
Tipo de uma classe formatada. Isso fornece as informações de layout necessárias para excluir o buffer no ptr parâmetro.
- Atributos
Exceções
structuretype tem um layout automático. Em vez disso, use sequencial ou explícito.
Comentários
Você pode usar esse método para liberar campos de tipo de referência, como cadeias de caracteres, de uma estrutura não gerenciada. Ao contrário de seus campos, uma estrutura pode ser um tipo de valor ou um tipo de referência. Estruturas de tipo de valor que contêm campos de tipo de valor (todos blittable) não têm referências cuja memória deve ser liberada. O Marshal.StructureToPtr método usa esse método para evitar vazamentos de memória ao reutilização da memória ocupada por uma estrutura.
DestroyStructure chama a função COM SysFreeString , que, por sua vez, libera uma cadeia de caracteres alocada.
Além disso DestroyStructure, a Marshal classe fornece dois outros métodos de desalocação de memória: FreeCoTaskMem e FreeHGlobal.
Confira também
Aplica-se a
DestroyStructure<T>(IntPtr)
- Origem:
- Marshal.cs
- Origem:
- Marshal.cs
- Origem:
- Marshal.cs
- Origem:
- Marshal.cs
- Origem:
- Marshal.cs
Libera todas as subestruturas de um tipo especificado para o qual o bloco de memória não gerenciado especificado aponta.
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
O tipo da estrutura formatada. Isso fornece as informações de layout necessárias para excluir o buffer no ptr parâmetro.
Parâmetros
- ptr
-
IntPtr
nativeint
Um ponteiro para um bloco de memória não gerenciado.
- Atributos
Exceções
T tem um layout automático. Em vez disso, use sequencial ou explícito.
Comentários
Você pode usar esse método para liberar campos de tipo de referência, como cadeias de caracteres, de uma estrutura não gerenciada. Ao contrário de seus campos, uma estrutura pode ser um tipo de valor ou um tipo de referência. As estruturas de tipo de valor que contêm campos de tipo de valor (todos blittable) não têm referências cuja memória deve ser liberada. O Marshal.StructureToPtr método usa esse método para evitar vazamentos de memória ao reutilização da memória ocupada por uma estrutura.
DestroyStructure chama a função COM SysFreeString , que, por sua vez, libera uma cadeia de caracteres alocada.