void ResizeCapacity(int newCapacity) { CheckAllocator(Allocator); var oldBytesToMalloc = sizeof(UnsafeList *) * Capacity; var newBytesToMalloc = sizeof(UnsafeList *) * newCapacity; var newPtr = (UnsafeList **)UnsafeUtility.Malloc(newBytesToMalloc, UnsafeUtility.AlignOf <long>(), Allocator); UnsafeUtility.MemClear(newPtr, newBytesToMalloc); if (Ptr != null) { UnsafeUtility.MemCpy(newPtr, Ptr, oldBytesToMalloc); UnsafeUtility.Free(Ptr, Allocator); } Ptr = newPtr; Capacity = newCapacity; }
public void Dispose() { if (ShouldDeallocate(Allocator)) { for (int i = 0; i < Length; i++) { if (Ptr[i] != null && Ptr[i]->IsCreated) { Ptr[i]->Clear(); Ptr[i]->Dispose(); } } UnsafeUtility.Free(Ptr, Allocator); Allocator = Allocator.Invalid; } Ptr = null; Length = 0; Capacity = 0; }