首页 > 代码库 > C#调用C++ memcpy实现各种参数类型的内存拷贝
C#调用C++ memcpy实现各种参数类型的内存拷贝
using System;
using System.Runtime.InteropServices;
using System.IO;
namespace tx
{
struct ST
{
public char c1;
public int x;
public int y;
}
class Ct
{
[DllImport("msvcrt.dll", EntryPoint = "memcpy", CallingConvention = CallingConvention.Cdecl, SetLastError = false)]
public static extern void MemCopy(byte[] dest, byte[] src, int count);//字节数组到字节数组的拷贝
[DllImport("msvcrt.dll", EntryPoint = "memcpy", CallingConvention = CallingConvention.Cdecl, SetLastError = false)]
public static extern void MemCopy(int[] dest, byte[] src, int count);//字节数组到整形数组的拷贝
[DllImport("msvcrt.dll", EntryPoint = "memcpy", CallingConvention = CallingConvention.Cdecl, SetLastError = false)]
public unsafe static extern void MemCopy(ref ST dest, byte[] src, int count);//注意只有结构体能这么做,class不可以
static void Main(string[] args)
{
//测试----------------------------------------------
var ms = new MemoryStream();
BinaryWriter writer = new BinaryWriter(ms);
writer.Write((byte)‘a‘);
writer.Write((byte)‘b‘);
writer.Write((byte)‘c‘);
writer.Write((byte)‘d‘);
writer.Write((Int32)10);
writer.Write((Int32)30);
var len = ms.Length;
int[] bs = new int[len/4];
byte[] bss = new byte[len];
byte[] buf = ms.GetBuffer();
var ot = new ST();
MemCopy(bs, buf, (int)len);
MemCopy(bss, buf, (int)len);
MemCopy(ref ot, buf, (int)len);//注意只有结构体能这么做,class不可以
}
}
}
C#调用C++ memcpy实现各种参数类型的内存拷贝
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。