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

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

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

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

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

シェアする

  • このエントリーをはてなブックマークに追加

フォローする