public void Dispose() { #if ENABLE_UNITY_COLLECTIONS_CHECKS if (!UnsafeUtility.IsValidAllocator(m_AllocatorLabel)) { throw new InvalidOperationException("The NativeBucket can not be Disposed because it was not allocated with a valid allocator."); } #if UNITY_2018_3_OR_NEWER DisposeSentinel.Dispose(ref m_Safety, ref m_DisposeSentinel); #else DisposeSentinel.Dispose(m_Safety, ref m_DisposeSentinel); #endif #endif for (int i = 0; i < JobsUtility.MaxJobThreadCount; ++i) { NativeBucketHeader *headerBlock = GetHeaderBlock(m_HeaderBlock, i); if (headerBlock->block != IntPtr.Zero) { UnsafeUtility.Free((void *)headerBlock->block, m_AllocatorLabel); } } UnsafeUtility.Free(m_HeaderBlock, m_AllocatorLabel); m_HeaderBlock = null; }