I've been playing with this arena bump allocator.
https://github.com/gilzoide/c-allocators
I've been using it with an event driven code where after an event is fired off and returns the handler just hard resets the arena.
You could probably use something like that as well.
Either way I support not mixing manual memory management with business logic.