internal static void *Realloc(void *a, long newSize) { Pointer pointer; if (!Pointers.TryGetValue((long)a, out pointer)) { // Allocate new return(Malloc(newSize)); } if (newSize <= pointer.Size) { // Realloc not required return(a); } var result = Malloc(newSize); CRuntime.Memcpy(result, a, pointer.Size); Pointers.TryRemove((long)pointer.Ptr, out pointer); pointer.Dispose(); return(result); }
internal static void MemMove(void *a, void *b, long size) { using (var temp = new PinnedArray <byte>(size)) { CRuntime.Memcpy(temp.Ptr, b, size); CRuntime.Memcpy(a, temp.Ptr, size); } }