This isn't for the first alloc—there's some non-page-multiple size from one allocation that makes the next one non-aligned. I'm not sure exactly which allocation causes it, is it important? I can check again if you want.

I do think this is the best place for this code, rather than where we update next_address. Imagine the sequence:

```C
for (i = 0; i < 1000; ++i)
  addrs[i] = vm_acquire(42);
fixed = vm_acquire(4096, MAP_FIXED);
```
If we put this at the end of each allocation, each tiny allocation would use up a whole page. This way, all the small allocations that don't require alignment can use space efficiently, and only MAP_FIXED alignments skip to the next page.