Marshal.StringToHGlobalAuto(String) Método

Definición

Copia el contenido de un String administrado en la memoria no administrada, convirtiéndolo en formato ANSI si es necesario.

C#
public static IntPtr StringToHGlobalAuto(string? s);
C#
public static IntPtr StringToHGlobalAuto(string s);
C#
[System.Security.SecurityCritical]
public static IntPtr StringToHGlobalAuto(string s);

Parámetros

s
String

Cadena administrada que se va a copiar.

Devoluciones

IntPtr

Dirección, en memoria no administrada, donde se copió la cadena o 0 si s es null.

Atributos

Excepciones

No hay suficiente memoria disponible.

Ejemplos

En el ejemplo siguiente se muestra cómo convertir el contenido de una clase administrada en memoria no administrada String y, a continuación, eliminar la memoria no administrada cuando haya terminado.

C++
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;
}

Comentarios

StringToHGlobalAuto es útil para la serialización personalizada o para su uso al mezclar código administrado y no administrado. Dado que este método asigna la memoria no administrada necesaria para una cadena, libere siempre la memoria llamando a FreeHGlobal. Este método proporciona la funcionalidad opuesta de Marshal.PtrToStringAuto.

Este método copia caracteres NULL incrustados e incluye un carácter nulo de terminación.

Se aplica a

Produto Versións
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Consulte también