Marshal.StringToHGlobalAuto(String) Metoda

Definicja

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

IntPtr

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ż