本サイトでは、アフィリエイト広告およびGoogleアドセンスを利用しています。

C# でアンマネージ領域のメモリコピー

単なる memcpy のようなことを、アンマネージ領域で行いたいときの話です。
Marshal.Copy が一見できるかなと期待してしまうのですが、これはマネージド配列からアンマネージドのメモリへコピーするための関数です。(オーバーライドにより逆方向も可能になってます)。

しかしコピー元もコピー先もアンマネージドのオーバーライドはありません。
これをどうするかですが、 memcpy を使用するとちょっと大変なので Win32 API の力を借ります。

CopyMemory という関数が、 kernel32 に含まれているので、これを使います。

[DllImport("kernel32.dll")]
public static extern void CopyMemory(IntPtr dest, IntPtr src, uint count);

memcpy を使おうとすると、 VCランタイムがインストール必須になってしまうのでこちらで。

プログラミング
すらりんをフォローする
すらりん日記

コメント

タイトルとURLをコピーしました