feat(memory): refactor allocation and add new queue
Refactored memory management by removing safety checks and introducing `MemoryHandle` for centralized tracking. Simplified allocation logic across allocators and enhanced `Dispose` methods for better resource cleanup. Added `UnsafeChunkedQueue<T>`, a lock-free, dynamically resizing queue with chunk-based memory management, supporting parallel producers and consumers. Updated unit tests to validate new queue functionality and ensure compatibility with refactored memory logic. Incremented assembly version to 1.6.12. BREAKING CHANGE: Removed `#if MHP_ENABLE_SAFETY_CHECKS` blocks, altering memory validation behavior.
This commit is contained in:
@@ -474,6 +474,7 @@ public unsafe struct TLSF : IMemoryAllocator<TLSF, TLSF.CreationOptions>
|
||||
MemoryUtility.Free(_blocks);
|
||||
_blocks = null;
|
||||
}
|
||||
|
||||
if (_slBitmaps != null)
|
||||
{
|
||||
MemoryUtility.Free(_slBitmaps);
|
||||
@@ -481,14 +482,13 @@ public unsafe struct TLSF : IMemoryAllocator<TLSF, TLSF.CreationOptions>
|
||||
}
|
||||
|
||||
MemoryChunk* chunk = _chunks;
|
||||
_chunks = null;
|
||||
|
||||
while (chunk != null)
|
||||
{
|
||||
MemoryChunk* next = chunk->next;
|
||||
AlignedFree(chunk->memory);
|
||||
chunk = next;
|
||||
}
|
||||
|
||||
_chunks = null;
|
||||
_flBitmap = 0;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user