Yes, I know the standard library already ships this idea: std::pmr::monotonic_buffer_resource (C++17, <memory_resource>). Same bump-pointer approach, and it plugs into pmr::vector and pmr::string.
I wanted to build the bare version first to see where the time goes.
Why can't I just use std::vector of C++ as an arena allocator and call it a day?
I'd never tried it, so I built one and benchmarked it against naive new/delete. Here's what perf says
This is also the best case for an arena: allocate lots, free all at once. malloc is doing far more general work (any size, any order, thread safety).
Great for parsers, per-frame game data, and request-scoped memory. Not a malloc replacement.