36

IntPtrバイトのいくつかのデータ領域を指す2 つの値がありlengthます。length200k から 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);

ただし、追加の一時的な (潜在的に巨大な) 配列が必要になるという欠点があります。残念ながら、 .NET フレームワークで からにMarshal.Copy直接コピーするバリアントを見つけることができなかったので、代替手段を探しています。IntPtrIntPtr

32 ビット Windows と 64 ビット Windows で動作するソリューションに興味があります。助言がありますか?

4

3 に答える 3