Share via


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.IntPtr

    Ein Zeiger auf einen nicht verwalteten Speicherblock.

  • structuretype
    Type: System.Type

    Typ 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

SecurityCriticalAttribute

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