public NativeBinaryHeap(int initialCapacity, Allocator allocator) { // Insist on a minimum capacity initialCapacity = ceilpow2(initialCapacity); initialCapacity = max(initialCapacity, 4); var sizeOf = SizeOf <T>(); var totalSize = sizeOf * (long)initialCapacity; #if ENABLE_UNITY_COLLECTIONS_CHECKS if (allocator <= Allocator.None) { throw new ArgumentException( "Allocator must be Temp, TempJob or Persistent", nameof(allocator)); } if (totalSize > int.MaxValue) { throw new ArgumentOutOfRangeException(nameof(initialCapacity), $"Capacity * sizeof(T) cannot exceed {int.MaxValue} bytes"); } DisposeSentinel.Create(out this.safety, out this.disposeSentinel, 0, allocator); #endif var alignOf = AlignOf <T>(); this.binaryHeapData = UnsafeBinaryHeap.Create(sizeOf, alignOf, initialCapacity, allocator); }
void Deallocate() { UnsafeBinaryHeap.Destroy(this.binaryHeapData); this.binaryHeapData = null; }