From d0bebfb5c71522049d0d65482ddc9e3f2fc90c77 Mon Sep 17 00:00:00 2001 From: Viktor Stojanovic Date: Fri, 7 Aug 2026 15:52:30 +0200 Subject: [PATCH 1/2] Fix Allocate method --- src/NativeAllocator.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NativeAllocator.cs b/src/NativeAllocator.cs index 3a1dbb9..a9de943 100644 --- a/src/NativeAllocator.cs +++ b/src/NativeAllocator.cs @@ -6,7 +6,7 @@ namespace SharpAllocators { public T* Allocate(long count) where T : unmanaged { - return (T*)NativeMemory.Alloc((nuint)count); + return (T*)NativeMemory.Alloc((nuint)(count * sizeof(T))); } public void Free(T* pointer) where T : unmanaged From 668c9c06590879fb1b5181ead640eca73e71d4bc Mon Sep 17 00:00:00 2001 From: Viktor Stojanovic Date: Fri, 7 Aug 2026 15:54:39 +0200 Subject: [PATCH 2/2] Add AggressiveInlining to all methods for performance. --- src/NativeAllocator.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/NativeAllocator.cs b/src/NativeAllocator.cs index a9de943..421d05d 100644 --- a/src/NativeAllocator.cs +++ b/src/NativeAllocator.cs @@ -1,19 +1,23 @@ -using System.Runtime.InteropServices; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace SharpAllocators { public readonly unsafe struct NativeAllocator : IAllocator { + [MethodImpl(MethodImplOptions.AggressiveInlining)] public T* Allocate(long count) where T : unmanaged { return (T*)NativeMemory.Alloc((nuint)(count * sizeof(T))); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void Free(T* pointer) where T : unmanaged { NativeMemory.Free(pointer); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public T* Reallocate(T* pointer, long count) where T : unmanaged { return (T*)NativeMemory.Realloc(pointer, (nuint)count);