バイトのデータ領域を指す2つのIntPtr
の値があります。 length
は、200k〜400kの大きさのオーダーを有することができる。IntPtrからIntPtrへデータをコピー
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);
しかし、追加の一時的な(潜在的に巨大な)アレイが必要であるという欠点があります。残念ながら、IntPtr
からIntPtr
に直接コピーするための.NETフレームワークでMarshal.Copy
の亜種が見つかりませんでしたので、代替案を探しています。
32ビットWindowsと64ビットWindowsで動作するソリューションに興味があります。助言がありますか?
'unsafe'を使用できますか? – driis
@driis:はい、可能です。 –