将数据从 IntPtr 复制到 IntPtr。
- 论坛
- 将数据从 IntPtr 复制到 IntPtr。
15 浏览
将数据从 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
直接复制到IntPtr
的Marshal.Copy
变体,所以我在寻找替代方案。
我对在32位Windows和64位Windows上都能工作的解决方案感兴趣。有什么建议吗?