【发布时间】:2014-07-21 16:52:31
【问题描述】:
在 C++/CX 中是否可以将 byte* 转换为 Array^?
目前我通过复制每个值来实现这一点,我知道这不是空间/性能效率。
我目前的实现是:
Array<byte>^ arr = ref new Array<byte>(byteCount);
for (int i = 0; i < byteCount; i++)
{
arr[i] = *(bytes + i);
}
【问题讨论】:
-
使用 ArrayReference 代替。
-
@HansPassant MSDN 说“通过使用 ArrayReference 填充 C 样式的数组,您可以避免先复制到 Platform::Array 变量,然后再复制到C 风格的数组”。所以我猜当我的用例是从 C 样式数组复制到 Platform::Array 类时,ArrayReference 用于复制到 C 样式数组。
-
请注意,通过 ABI 传递数组无论如何都会产生副本。为避免复制,请使用 IBuffer(尽管如果其中一方是 .NET,则避免复制可能有点棘手。这当然是可能的)。
标签: c++-cx