c# – 如何将非托管内存数组复制到同一个非托管内存中

我保留了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

我需要在指定的偏移处将src1和src2的128字节元素复制到dst.

Marshal.Copy不适合此类用途.
由于src和dst处于非托管内存区域.

最佳答案
Window的API函数memcopy应该可以解决问题.

[DllImport("msvcrt.dll", EntryPoint = "memcpy",
    CallingConvention = CallingConvention.Cdecl, 
    SetLastError = false)]
public static extern IntPtr memcpy(IntPtr dest, IntPtr src, UIntPtr count);

另外,看看这个:

https://stackoverflow.com/a/2658394/558018

正如它声称的那样,您可以使用不安全的上下文来手动传输必要的字节.

转载注明原文:c# – 如何将非托管内存数组复制到同一个非托管内存中 - 代码日志