Freigeben über


Marshal.FreeHGlobal-Methode

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

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