Marshal.StringToHGlobalUni(String) 方法

定义

将托管 String 的内容复制到非托管内存。

public:
 static IntPtr StringToHGlobalUni(System::String ^ s);
[System.Security.SecurityCritical]
public static IntPtr StringToHGlobalUni (string s);
public static IntPtr StringToHGlobalUni (string? s);
public static IntPtr StringToHGlobalUni (string s);
[<System.Security.SecurityCritical>]
static member StringToHGlobalUni : string -> nativeint
static member StringToHGlobalUni : string -> nativeint
Public Shared Function StringToHGlobalUni (s As String) As IntPtr

参数

s
String

要复制的托管字符串。

返回

IntPtr

nativeint

非托管内存中将 s 复制到其中的地址;如果 snull,则为 0。

属性

例外

此方法未能分配足够的本机堆内存。

s 参数超过了操作系统所允许的最大长度。

注解

StringToHGlobalUni 可用于自定义封送处理或在混合托管和非托管代码时使用。 由于此方法分配字符串所需的非托管内存,因此始终通过调用 FreeHGlobal释放内存。 此方法提供相反的功能 Marshal.PtrToStringUni

此方法复制嵌入的 null 字符,并包含终止 null 字符。

此 API 反映了 Unicode 的 Windows 定义,该定义是 UTF-16 2 字节编码。 在许多非 Windows 平台上, wchar_t 数据类型为 4 字节,而不是 2 字节。 请查阅编译器以确认是否可以 wchar_t 使用或 char16_t 应改用。

适用于

另请参阅