public unsafe void MemmoveOverlappedMemory2() { byte[] data = new byte[100]; for (var i = 0; i < data.Length; i++) { data[i] = (byte)(i + 10); } fixed(byte *destPtr = &data[1], srcPtr = data) { TargetClass.__Memmove(destPtr, srcPtr, 5); } CollectionAssert.AreNotEquivalent( new [] { 10, 10, 11, 12, 13, 14, 16 }, data.Take(7).ToArray()); }
public unsafe void MemmoveNonOverlappedMemory() { byte[] src = new byte[10]; for (var i = 0; i < src.Length; i++) { src[i] = (byte)(i + 10); } byte[] dest = new byte[100]; dest[6] = 255; fixed(byte *destPtr = dest, srcPtr = src) { TargetClass.__Memmove(destPtr, srcPtr, 5); } CollectionAssert.AreNotEquivalent( new[] { 10, 11, 12, 13, 14, 0 }, dest.Take(6).ToArray()); }