如果你想在两个数组之间进行内存复制,那么Array.Copy在.NET中有一个函数:
char[] GetCopy(char[] buf)
{
char[] result = new char[buf.Length];
Array.Copy(buf, result);
return result;
}
Run Code Online (Sandbox Code Playgroud)
这通常是比手动换循环的所有字符复制更快buf到result,因为它是一个块拷贝操作,仅仅需要一块内存,并将其写入到目标.
同样,如果我给了a char*并int指定了它的大小,我的选择是什么?这是我考虑过的:
src和dst成为数组或者,如果没有其他选择,是否有某种方法从指针char*和长度构造数组int?如果我能做到这一点,我可以将指针转换为数组并将它们传递给Array.Copy.
我不是在寻找for循环,因为正如我所说的那样,与块副本相比它们效率不高,但如果这是我认为必须做的唯一方法.
TL; DR:我基本上都在寻找memcpy(),但在C#中可以用于PCL.
我保留了10个128字节的内存
IntPtr dst = Marshal.AllocHGlobal (10 * 128);
IntPtr src1 = Marshal.AllocHGlobal (128);
// .... init scr1 from DLL
IntPtr src2 = Marshal.AllocHGlobal (128);
// .... init scr2 from DLL
Run Code Online (Sandbox Code Playgroud)
我需要的128个字节元素复制src1并src2以dst指定的偏移量.
Marshal.Copy不适合此类用途.自从src和dst非托管内存区域.