How about a stack allocator like this: ---- enum StackSize = 8192;
struct Stack { static Stack it; void[StackSize] _buffer = void; size_t _bufUsage; void[] take(size_t N) { if ((this._bufUsage + N) <= StackSize) { scope(exit) this._bufUsage += N; return _buffer[this._bufUsage .. this._bufUsage + N]; } return null; } void reset() { this._bufUsage = 0; } } ---- Would that fit in std.allocator?