将数据从 IntPtr 复制到 IntPtr。

15 浏览
0 Comments

将数据从 IntPtr 复制到 IntPtr。

我有两个指向长度为length字节的某些数据区域的IntPtr值。 length的数量级可能为200k到400k。

int length = /* ..*/
IntPtr ptrSrc = /*.. */;
IntPtr ptrDst = /* .. */;

现在我想将数据从ptrSrc复制到ptrDst。这段代码可以正常工作:

byte[] data = new byte[length];
Marshal.Copy(ptrSrc, data, 0, length);
Marshal.Copy(data, 0, ptrDst, length);

但它的缺点是需要一个额外的临时(可能很大)数组。不幸的是,我在.NET框架中找不到一个从IntPtr直接复制到IntPtrMarshal.Copy变体,所以我在寻找替代方案。

我对在32位Windows和64位Windows上都能工作的解决方案感兴趣。有什么建议吗?

0