Marshal.StringToHGlobalAuto(String) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Zkopíruje obsah spravované String paměti do nespravované paměti a v případě potřeby se převede do formátu 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
Spravovaný řetězec, který se má zkopírovat.
Návraty
nativeint
Adresa v nespravované paměti na místo, kam byl řetězec zkopírován, nebo 0, pokud s
je null
.
- Atributy
Výjimky
Není k dispozici dostatek paměti.
Příklady
Následující příklad ukazuje, jak převést obsah spravované String třídy na nespravovanou paměť a poté odstranit nespravovanou paměť po dokončení.
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;
}
Poznámky
StringToHGlobalAuto je užitečný pro vlastní zařazování nebo pro použití při kombinování spravovaného a nespravovaného kódu. Vzhledem k tomu, že tato metoda přiděluje nespravovanou paměť potřebnou pro řetězec, vždy uvolněte paměť voláním FreeHGlobal. Tato metoda poskytuje opačnou funkci než Marshal.PtrToStringAuto.
Tato metoda zkopíruje vložené znaky null a obsahuje ukončující znak null.