У меня есть два значения 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. Любые предложения?