Exemple #1
0
        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);
        }
Exemple #2
0
 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);
     }
 }