C#でもC言語のmemcpy()ようにメモリーコピーをしたい場合があります。その方法の説明をします。
Marshal クラス
名前空間: System.Runtime.InteropServices MSDN アンマネージ コードを扱うときに使用できるさまざまなメソッドを提供します。
アンマネージ メモリの割り当て、アンマネージ メモリ ブロックのコピー、マネージ型からアンマネージ型への変換などができます。
★構造体サンプル
struct Hoge { public int a; public int b; public int c; }
メモリに構造体のデータをコピーする方法
Hoge obj = new Hoge(); int size = Marshal.SizeOf(obj); IntPtr ptr = Marshal.AllocHGlobal(size); Marshal.StructureToPtr(obj, ptr, false);
Byte配列にデータをコピーする方法
Hoge obj = new Hoge(); int size = Marshal.SizeOf(obj); byte[] bytes = new byte[size]; GCHandle gch = GCHandle.Alloc(bytes, GCHandleType.Pinned); Marshal.StructureToPtr(obj, gch.AddrOfPinnedObject(), false); gch.Free();