我有两个IntPtr
值指向一些length
字节数据区域。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);
但它的缺点是需要一个额外的临时(可能是巨大的)数组。Marshal.Copy
不幸的是,我在 .NET 框架中找不到用于直接从IntPtr
to复制的变体IntPtr
,因此我正在寻找替代方案。
我对适用于 32 位 Windows 和 64 位 Windows 的解决方案感兴趣。有什么建议么?