Allocator.cs 537 B

123456789101112131415161718192021222324
  1. using System;
  2. namespace ARMeilleure.Common
  3. {
  4. unsafe abstract class Allocator : IDisposable
  5. {
  6. public T* Allocate<T>(ulong count = 1) where T : unmanaged
  7. {
  8. return (T*)Allocate(count * (uint)sizeof(T));
  9. }
  10. public abstract void* Allocate(ulong size);
  11. public abstract void Free(void* block);
  12. protected virtual void Dispose(bool disposing) { }
  13. public void Dispose()
  14. {
  15. Dispose(true);
  16. GC.SuppressFinalize(this);
  17. }
  18. }
  19. }