Well I don't think I'll have to write a custom allocator. Existing allocators allow you to have placement allocation, or rather more precisely, manage sub-buffers within a static buffer. By this I mean that the sub buffer is treated as though it were an existing slab given to the process by the OS, but instead of actually servicing it with new and free, you place a table in it that acts just like the table that libc manages and coalesces during regular management with typical use. In any case, I think I don't have to do this because it's just a regular consumer producer issue, and I can use ring buffers for that.