I have two IntPtr
values pointing to some data areas of length
bytes. length
may have an order of magnitude of 200k to 400k.
int length = /* ..*/
IntPtr ptrSrc = /*.. */;
IntPtr ptrDst = /* .. */;
Now I want to copy the data from ptrSrc
to ptrDst
. This code works fine:
byte[] data = new byte[length];
Marshal.Copy(ptrSrc, data, 0, length);
Marshal.Copy(data, 0, ptrDst, length);
but it has the drawback of needing an additional temporary (potentially huge) array. Unfortunately, I could not find a Marshal.Copy
variant in the .NET framework for copying directly from IntPtr
to IntPtr
, so I am looking for alternatives.
I am interested in a solution which works on 32-bit Windows as well as 64-bit Windows. Any suggestions?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…