Freigeben über


Marshal.StringToHGlobalAuto(String) Methode

Definition

Kopiert den Inhalt eines verwalteten String in den nicht verwalteten Speicher und konvertiert ihn ggf. in das ANSI-Format.

public:
 static IntPtr StringToHGlobalAuto(System::String ^ s);
public static IntPtr StringToHGlobalAuto (string? s);
public static IntPtr StringToHGlobalAuto (string s);
[System.Security.SecurityCritical]
public static IntPtr StringToHGlobalAuto (string s);
static member StringToHGlobalAuto : string -> nativeint
[<System.Security.SecurityCritical>]
static member StringToHGlobalAuto : string -> nativeint
Public Shared Function StringToHGlobalAuto (s As String) As IntPtr

Parameter

s
String

Eine zu kopierende verwaltete Zeichenfolge.

Gibt zurück

IntPtr

nativeint

Die Adresse im nicht verwalteten Arbeitsspeicher, an die die Zeichenfolge kopiert wurde, oder 0, wenn s gleich null ist.

Attribute

Ausnahmen

Es ist nicht genügend Arbeitsspeicher verfügbar.

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie sie den Inhalt einer verwalteten String Klasse in nicht verwalteten Arbeitsspeicher konvertieren und anschließend den nicht verwalteten Arbeitsspeicher verwerfen.

using namespace System;
using namespace System::Runtime::InteropServices;

int main()
{
    // Create a managed string.
    String^ managedString = "Hello unmanaged world (from the managed world).";

    // Marshal the managed string to unmanaged memory.
    char*  stringPointer = (char*) Marshal::StringToHGlobalAuto(managedString).ToPointer();

    // Pass the string to an unmanaged API.

    // Always free the unmanaged string.
    Marshal::FreeHGlobal(IntPtr(stringPointer));

    return 0;
}

Hinweise

StringToHGlobalAuto ist nützlich für benutzerdefiniertes Marshalling oder für die Verwendung beim Mischen von verwaltetem und nicht verwaltetem Code. Da diese Methode den nicht verwalteten Arbeitsspeicher zuordnet, der für eine Zeichenfolge erforderlich ist, geben Sie den Arbeitsspeicher immer durch Aufrufen FreeHGlobalvon frei. Diese Methode stellt die entgegengesetzte Funktionalität von bereit Marshal.PtrToStringAuto.

Diese Methode kopiert eingebettete NULL-Zeichen und enthält ein abschließendes NULL-Zeichen.

Gilt für:

Weitere Informationen