Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gibt alle Unterstrukturen frei, auf die der angegebene nicht verwaltete Speicherblock zeigt.
Namespace: System.Runtime.InteropServices
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
<ComVisibleAttribute(True)> _
Public Shared Sub DestroyStructure ( _
ptr As IntPtr, _
structuretype As Type _
)
'Usage
Dim ptr As IntPtr
Dim structuretype As Type
Marshal.DestroyStructure(ptr, structuretype)
[ComVisibleAttribute(true)]
public static void DestroyStructure (
IntPtr ptr,
Type structuretype
)
[ComVisibleAttribute(true)]
public:
static void DestroyStructure (
IntPtr ptr,
Type^ structuretype
)
/** @attribute ComVisibleAttribute(true) */
public static void DestroyStructure (
IntPtr ptr,
Type structuretype
)
ComVisibleAttribute(true)
public static function DestroyStructure (
ptr : IntPtr,
structuretype : Type
)
Parameter
- ptr
Ein Zeiger auf einen nicht verwalteten Speicherblock.
- structuretype
Typ einer formatierten Klasse. Damit werden die Layoutinformationen bereitgestellt, die zum Löschen des Puffers im ptr-Parameter benötigt werden.
Ausnahmen
| Ausnahmetyp | Bedingung |
|---|---|
structureType weist ein automatisch angelegtes Layout auf. Verwenden Sie stattdessen sequenzielles oder explizites Layout. |
Hinweise
Sie können mit dieser Methode Verweistypfelder einer nicht verwalteten Struktur freigeben, beispielsweise Zeichenfolgen. Eine Struktur kann im Gegensatz zu ihren Feldern einen Werttyp oder einen Verweistyp darstellen. Werttypstrukturen mit Werttypfeldern (die alle blitfähig sind) verfügen über keine Verweise, deren Speicher freigegeben werden muss. StructureToPtr verhindert mit dieser Methode Speicherverluste bei der Wiederverwendung von Speicher, der mit einer Struktur belegt ist.
DestroyStructure ruft die SysFreeString-COM-API-Methode auf, die wiederum eine reservierte Zeichenfolge freigibt. Weitere Informationen zu SysFreeString finden Sie in der MSDN Library.
Neben DestroyStructure stellt die Marshal-Klasse zwei andere Methoden zur Freigabe von reserviertem Speicher bereit: Marshal.FreeCoTaskMem und Marshal.FreeHGlobal.
Hinweis
Diese Methode verwendet SecurityAction.LinkDemand, um einen Aufruf aus nicht vertrauenswürdigem Code zu verhindern. Nur der direkte Aufrufer muss über die SecurityPermissionAttribute.UnmanagedCode-Berechtigung verfügen. Wenn der Code aus teilweise vertrauenswürdigem Code aufgerufen werden kann, dürfen Benutzereingaben nicht ohne Validierung an Methoden der Marshal-Klasse übergeben werden. Wichtige Einschränkungen bei der Verwendung des LinkDemand-Members finden Sie unter "Demand" und "LinkDemand".
.NET Framework-Sicherheit
- SecurityPermission für die Berechtigung zum Aufrufen von nicht verwaltetem Code. Zugeordnete Enumeration: UnmanagedCode Sicherheitsaktion: LinkDemand
Plattformen
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
Marshal-Klasse
Marshal-Member
System.Runtime.InteropServices-Namespace
FreeCoTaskMem
FreeHGlobal