Marshal.DestroyStructure-Methode: (IntPtr, Type)
Veröffentlicht: Oktober 2016
Gibt alle Unterstrukturen frei, auf die der angegebene nicht verwaltete Speicherblock zeigt.
Namespace: System.Runtime.InteropServices
Assembly: mscorlib (in mscorlib.dll)
Syntax
[SecurityCriticalAttribute]
[ComVisibleAttribute(true)]
public static void DestroyStructure(
IntPtr ptr,
Type structuretype
)
public:
[SecurityCriticalAttribute]
[ComVisibleAttribute(true)]
static void DestroyStructure(
IntPtr ptr,
Type^ structuretype
)
[<SecurityCriticalAttribute>]
[<ComVisibleAttribute(true)>]
static member DestroyStructure :
ptr:nativeint *
structuretype:Type -> unit
<SecurityCriticalAttribute>
<ComVisibleAttribute(True)>
Public Shared Sub DestroyStructure (
ptr As IntPtr,
structuretype As Type
)
Parameter
ptr
Type: System.IntPtrEin Zeiger auf einen nicht verwalteten Speicherblock.
structuretype
Type: System.TypeTyp einer formatierten Klasse. Damit werden die Layoutinformationen bereitgestellt, die zum Löschen des Puffers im ptr-Parameter benötigt werden.
Ausnahmen
Exception | Condition |
---|---|
ArgumentException | structureType verfügt über ein automatisches Layout. Verwenden Sie stattdessen sequenzielles oder explizites. |
Hinweise
Sie können diese Methode verwenden, Verweistyp-Felder, z. B. Zeichenfolgen, einer nicht verwalteten Struktur freigeben. Im Gegensatz zu den Feldern kann eine Struktur ein Werttyp oder ein Referenztyp sein. Werttyp-Strukturen, die Felder für Werttyp (alle blitfähig) enthalten, haben keine Verweise, deren Arbeitsspeicher freigegeben werden muss. Die Marshal.StructureToPtr Methode verwendet diese Methode, um Speicherverluste zu verhindern, wenn von einer Struktur belegten Speicher wiederverwendet.
DestroyStructure Ruft die COM SysFreeString -Funktion auf, die wiederum eine reservierte Zeichenfolge freigibt.
Zusätzlich zu DestroyStructure, die Marshal -Klasse bietet zwei andere Methoden zur Freigabe von belegtem Speicher: FreeCoTaskMem und FreeHGlobal.
Sicherheit
requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.
Versionsinformationen
Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Windows Phone
Verfügbar seit 8.1
Siehe auch
FreeCoTaskMem
FreeHGlobal
DestroyStructure Überladen
Marshal-Klasse
System.Runtime.InteropServices-Namespace
Blittable and Non-Blittable Types
Zurück zum Anfang