So the next step was to allocate a copy of the block into a new allocation, once the block was constructed and the required byte size was known. The allocation and copy were fast, and the release of the single chunk was invoked via the block destructor. This appeared to work, and performed well when forwarding blocks to another thread. However there was a stupid design flaw which I failed to forsee.