我有两个IntPtr
值,它们指向长度为length
字节的某些数据区域。length
的数量级可能在200k到400k之间。
int length = /* ..*/
IntPtr ptrSrc = /*.. */;
IntPtr ptrDst = /* .. */;
现在我想要将数据从ptrSrc
复制到ptrDst
。这段代码可以正常工作:
现在我想要将数据从ptrSrc
复制到ptrDst
。这段代码可以正常工作:
byte[] data = new byte[length];
Marshal.Copy(ptrSrc, data, 0, length);
Marshal.Copy(data, 0, ptrDst, length);
但它的缺点是需要一个额外的临时(可能很大)数组。不幸的是,我在.NET框架中找不到可以直接从复制到的Marshal.Copy
变体,因此我正在寻找替代方法。
我对适用于32位Windows和64位Windows的解决方案感兴趣。有什么建议吗?
unsafe
吗? - driis