Marshal.StringToHGlobalAuto(String) メソッド

定義

マネージド String の内容をアンマネージド メモリにコピーし、必要に応じて ANSI 形式に変換します。

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

パラメーター

s
String

コピーされるマネージド文字列。

戻り値

IntPtr

文字列のコピー先となったアンマネージ メモリ内のアドレス。snull の場合は 0。

属性

例外

使用できるメモリが不足しています。

次の例では、マネージド String クラスの内容をアンマネージ メモリに変換し、完了したらアンマネージド メモリを破棄する方法を示します。

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

注釈

StringToHGlobalAuto は、カスタム マーシャリングや、マネージド コードとアンマネージド コードを混在させる場合に使用する場合に便利です。 このメソッドは、文字列に必要なアンマネージ メモリを割り当てるので、 を呼び出 FreeHGlobalして常にメモリを解放します。 このメソッドは、 の逆の機能を Marshal.PtrToStringAuto提供します。

このメソッドは、埋め込まれた null 文字をコピーし、終端の null 文字を含みます。

適用対象

製品 バージョン
.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

こちらもご覧ください