Marshal.StringToHGlobalAuto(String) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Kopiuje zawartość zarządzanej String do niezarządzanej pamięci, konwertując w razie potrzeby na format ANSI.
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
Parametry
- s
- String
Zarządzany ciąg do skopiowania.
Zwraca
nativeint
Adres, w pamięci niezarządzanej, do miejsca, w którym został skopiowany ciąg, lub 0, jeśli s
to null
.
- Atrybuty
Wyjątki
Za mało dostępnej pamięci.
Przykłady
W poniższym przykładzie pokazano, jak przekonwertować zawartość klasy zarządzanej String na pamięć niezarządzaną, a następnie usunąć niezarządzaną pamięć po zakończeniu.
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;
}
Uwagi
StringToHGlobalAuto jest przydatne w przypadku niestandardowego marshalingu lub do użycia podczas mieszania zarządzanego i niezarządzanych kodu. Ponieważ ta metoda przydziela niezarządzaną pamięć wymaganą dla ciągu, zawsze zwalnia pamięć przez wywołanie metody FreeHGlobal. Ta metoda zapewnia odwrotną funkcjonalność programu Marshal.PtrToStringAuto.
Ta metoda kopiuje osadzone znaki null i zawiera znak o wartości null zakończenia.
Dotyczy
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla