Marshal.StringToHGlobalAuto(String) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Kopieert de inhoud van een beheerd String geheugen naar onbeheerd geheugen en converteert indien nodig naar ANSI-indeling.
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
Parameters
- s
- String
Een beheerde tekenreeks die moet worden gekopieerd.
Retouren
nativeint
Het adres, in onbeheerd geheugen, naar de locatie waar de tekenreeks is gekopieerd, of 0 als s dat het is null.
- Kenmerken
Uitzonderingen
Er is onvoldoende geheugen beschikbaar.
Voorbeelden
In het volgende voorbeeld ziet u hoe u de inhoud van een beheerde String klasse converteert naar onbeheerd geheugen en vervolgens het niet-beheerde geheugen kunt verwijderen wanneer u klaar bent.
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;
}
Opmerkingen
StringToHGlobalAuto is handig voor aangepaste marshaling of voor gebruik bij het combineren van beheerde en onbeheerde code. Omdat met deze methode het niet-beheerde geheugen wordt toegewezen dat is vereist voor een tekenreeks, kunt u altijd het geheugen vrijmaken door aan te roepen FreeHGlobal. Deze methode biedt de tegenovergestelde functionaliteit van Marshal.PtrToStringAuto.
Met deze methode worden ingesloten null-tekens gekopieerd en wordt een null-teken beƫindigd.