unsafe public void ArenaAllocatorAlloc() { byte *buffer = arenaAllocator.Allocate <byte>(Bytes); for (int i = 0; i < Bytes; i++) { unchecked { buffer[i] = (byte)i; } } arenaAllocator.Free(buffer); }
public void ArenaAllocatorTest() { ArenaAllocator allocator = new ArenaAllocator(1000); Assert.AreSame(allocator, Allocator.GetAllocatorByID(allocator.ID)); Assert.IsTrue(Allocator.IsCached(allocator)); int *p = allocator.Allocate <int>(4); for (int i = 0; i < 4; i++) { p[i] = i + 1; } Assert.AreEqual(1, p[0]); Assert.AreEqual(2, p[1]); Assert.AreEqual(3, p[2]); Assert.AreEqual(4, p[3]); p = allocator.Reallocate(p, 6); Assert.AreEqual(1, p[0]); Assert.AreEqual(2, p[1]); Assert.AreEqual(3, p[2]); Assert.AreEqual(4, p[3]); Assert.AreEqual(0, p[4]); Assert.AreEqual(0, p[5]); allocator.Free(p); allocator.Dispose(); Assert.IsFalse(Allocator.IsCached(allocator)); }
private void FreePages(long Position, long PagesCount) { for (long Page = 0; Page < PagesCount; Page++) { long VA = Position + Page * PageSize; long PA = CpuMemory.GetPhysicalAddress(VA); Allocator.Free(PA, PageSize); } }