Marshal.DestroyStructure Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Überlädt
| Name | Beschreibung |
|---|---|
| DestroyStructure(IntPtr, Type) |
Veraltet.
Gibt alle Unterstrukturen frei, auf die der angegebene nicht verwaltete Speicherblock verweist. |
| DestroyStructure<T>(IntPtr) |
Gibt alle Unterstrukturen eines angegebenen Typs frei, auf die der angegebene nicht verwaltete Speicherblock verweist. |
DestroyStructure(IntPtr, Type)
- Quelle:
- Marshal.CoreCLR.cs
- Quelle:
- Marshal.CoreCLR.cs
- Quelle:
- Marshal.cs
- Quelle:
- Marshal.cs
- Quelle:
- Marshal.CoreCLR.cs
Achtung
DestroyStructure(IntPtr, Type) may be unavailable in future releases. Instead, use DestroyStructure<T>(IntPtr).
Gibt alle Unterstrukturen frei, auf die der angegebene nicht verwaltete Speicherblock verweist.
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)
Parameter
- ptr
-
IntPtr
nativeint
Ein Zeiger auf einen nicht verwalteten Speicherblock.
- structuretype
- Type
Typ einer formatierten Klasse. Dadurch werden die layoutinformationen bereitgestellt, die zum Löschen des Puffers im ptr Parameter erforderlich sind.
- Attribute
Ausnahmen
structuretype verfügt über ein automatisches Layout. Verwenden Sie stattdessen sequenzielle oder explizite Verwendung.
Hinweise
Sie können diese Methode verwenden, um Verweistypen wie Zeichenfolgen einer nicht verwalteten Struktur freizugeben. Im Gegensatz zu seinen Feldern kann eine Struktur ein Werttyp oder ein Bezugstyp sein. Werttypstrukturen, die Wertetypfelder enthalten (alle durchsuchbar), weisen keine Verweise auf, deren Arbeitsspeicher freigegeben werden muss. Die Marshal.StructureToPtr Methode verwendet diese Methode, um Speicherverluste beim Wiederverwenden von Arbeitsspeicher, der von einer Struktur belegt wird, zu verhindern.
DestroyStructure ruft die COM SysFreeString-Funktion auf, die wiederum eine zugeordnete Zeichenfolge freigibt.
Zusätzlich dazu DestroyStructurestellt die Marshal Klasse zwei weitere Speicher-Deallocation-Methoden bereit: FreeCoTaskMem und FreeHGlobal.
Weitere Informationen
Gilt für:
DestroyStructure<T>(IntPtr)
- Quelle:
- Marshal.cs
- Quelle:
- Marshal.cs
- Quelle:
- Marshal.cs
- Quelle:
- Marshal.cs
- Quelle:
- Marshal.cs
Gibt alle Unterstrukturen eines angegebenen Typs frei, auf die der angegebene nicht verwaltete Speicherblock verweist.
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)
Typparameter
- T
Der Typ der formatierten Struktur. Dadurch werden die layoutinformationen bereitgestellt, die zum Löschen des Puffers im ptr Parameter erforderlich sind.
Parameter
- ptr
-
IntPtr
nativeint
Ein Zeiger auf einen nicht verwalteten Speicherblock.
- Attribute
Ausnahmen
T verfügt über ein automatisches Layout. Verwenden Sie stattdessen sequenzielle oder explizite Verwendung.
Hinweise
Sie können diese Methode verwenden, um Bezugstypen wie Zeichenfolgen einer nicht verwalteten Struktur freizugeben. Im Gegensatz zu seinen Feldern kann eine Struktur ein Werttyp oder ein Bezugstyp sein. Werttypstrukturen, die Werttypfelder enthalten (alle blittbar) weisen keine Verweise auf, deren Arbeitsspeicher freigegeben werden muss. Die Marshal.StructureToPtr Methode verwendet diese Methode, um Speicherverluste beim Wiederverwenden von Arbeitsspeicher, der von einer Struktur belegt wird, zu verhindern.
DestroyStructure ruft die COM SysFreeString-Funktion auf, die wiederum eine zugeordnete Zeichenfolge freigibt.