У меня есть два значения IntPtr
, указывающие на некоторые области данных length
байт. length
может иметь порядок от 200 к 400 к.
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
в IntPtr
, поэтому я ищу альтернативы.
Меня интересует решение, которое работает на 32 Windows, а также на 64-битной Windows. Любые предложения?