Beispiel #1
0
        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;
        }