public void RentMany(int amount)
        {
            BlockAllocator kb16 = BlockAllocator.KB16;

            BlockMemory[] data = new BlockMemory[amount];
            for (int i = 0; i < amount; i++)
            {
                data[i] = kb16.Rent();
                Assert.Equal(1024 * 16, data[i].Memory.Length);
            }

            for (int i = 0; i < amount; i++)
            {
                for (int j = 0; j < amount; j++)
                {
                    if (i == j)
                    {
                        continue;
                    }

                    Assert.False(data[i].Memory.Span.Overlaps(data[j].Memory.Span));
                }
            }

            for (int i = 0; i < amount; i++)
            {
                data[i].Dispose();
            }
        }
        public void RentReturnRent()
        {
            BlockAllocator kb16 = BlockAllocator.KB16;

            BlockMemory block = kb16.Rent();

            block.Dispose();

            BlockMemory block2 = kb16.Rent();

            Assert.True(block.Memory.Span.Overlaps(block2.Memory.Span));
        }
        public void Alignment(int amount)
        {
            BlockAllocator kb16 = BlockAllocator.KB16;

            BlockMemory[] data = new BlockMemory[amount];
            for (int i = 0; i < amount; i++)
            {
                data[i] = kb16.Rent();
                unsafe
                {
                    fixed(byte *bytes = data[i].memory.Span)
                    {
                        Assert.True((long)bytes % 32 == 0);
                    }
                }
            }
            for (int i = 0; i < amount; i++)
            {
                data[i].Dispose();
            }
        }