Marshal.StringToHGlobalAuto(String) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Kopiert den Inhalt eines verwalteten String Speichers in nicht verwalteten Speicher, wenn erforderlich, in EINSI-Format konvertiert.
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 verwaltete Zeichenfolge, die kopiert werden soll.
Gibt zurück
nativeint
Die Adresse im nicht verwalteten Speicher an die Stelle, an die die Zeichenfolge kopiert wurde, oder 0( falls s vorhanden).null
- Attribute
Ausnahmen
Es ist nicht genügend Arbeitsspeicher verfügbar.
Beispiele
Im folgenden Beispiel wird veranschaulicht, wie der Inhalt einer verwalteten String-Klasse in nicht verwalteten Speicher konvertiert und anschließend den nicht verwalteten Speicher verworfen wird.
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 das benutzerdefinierte Marshalling oder für die Verwendung beim Mischen von verwaltetem und nicht verwaltetem Code. Da diese Methode den nicht verwalteten Speicher zuweist, der für eine Zeichenfolge erforderlich ist, geben Sie immer den Speicher frei, indem Sie den Aufruf aufrufen FreeHGlobal. Diese Methode bietet die entgegengesetzte Funktionalität von Marshal.PtrToStringAuto.
Diese Methode kopiert eingebettete NULL-Zeichen und enthält ein endendes NULL-Zeichen.