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 Speicherplatz frei, der zuvor aus dem nicht verwalteten Speicher des Prozesses mit AllocHGlobal reserviert wurde.
Namespace: System.Runtime.InteropServices
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
Public Shared Sub FreeHGlobal ( _
hglobal As IntPtr _
)
'Usage
Dim hglobal As IntPtr
Marshal.FreeHGlobal(hglobal)
public static void FreeHGlobal (
IntPtr hglobal
)
public:
static void FreeHGlobal (
IntPtr hglobal
)
public static void FreeHGlobal (
IntPtr hglobal
)
public static function FreeHGlobal (
hglobal : IntPtr
)
Parameter
- hglobal
Das Handle, das beim ursprünglichen übereinstimmenden Aufruf von AllocHGlobal zurückgegeben wurde.
Hinweise
Sie können FreeHGlobal zur Freigabe von Speicher aus dem globalen Heap verwenden, der von AllocHGlobal, ReAllocHGlobal oder einer gleichwertigen nicht verwalteten API-Methode reserviert wurde. Wenn der hglobal-Parameter NULL (Nothing in Visual Basic) ist, hat die Methode keine Auswirkungen.
FreeHGlobal macht die LocalFree-Funktion aus Kernel32.DLL verfügbar, die alle Bytes freigibt, sodass Sie den Speicher nicht mehr verwenden können, auf den hglobal zeigt. Weitere Informationen zu LocalFree finden Sie in der MSDN Library.
Neben FreeHGlobal stellt die Marshal-Klasse zwei weitere API-Methoden zur Freigabe von reserviertem Speicher bereit: DestroyStructure und FreeCoTaskMem.
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".
Hinweis zu Windows 95, Windows 98, Windows 98 Zweite Ausgabe, Windows Millennium Edition: Beim Übergeben eines ungültigen Handlewerts an FreeHGlobal wird eine ArgumentException ausgelöst.
Beispiel
Im folgenden Codebeispiel wird das Aufrufen der FreeHGlobal-Methode veranschaulicht. Dieses Codebeispiel ist Teil eines umfangreicheren Beispiels für die Marshal-Klasse.
// Demonstrate how to call GlobalAlloc and
// GlobalFree using the Marshal class.
IntPtr hglobal = Marshal.AllocHGlobal(100);
Marshal.FreeHGlobal(hglobal);
// Demonstrate how to call GlobalAlloc and
// GlobalFree using the Marshal class.
IntPtr hglobal = Marshal::AllocHGlobal(100);
Marshal::FreeHGlobal(hglobal);
Im folgenden Codebeispiel wird veranschaulicht, wie der Inhalt einer verwalteten String-Klasse in nicht verwalteten Speicher konvertiert wird. Anschließend wird der nicht verwaltete Speicher freigegeben.
.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
.NET Compact Framework
Unterstützt in: 2.0
Siehe auch
Referenz
Marshal-Klasse
Marshal-Member
System.Runtime.InteropServices-Namespace
AllocHGlobal
ReAllocHGlobal