Allocation on the stack is changing the stack pointer, space efficient heap allocation usually involves tracing through a bunch of tables to find space. It's the initialization that gets you, especially complex object construction, in either case.
I think the moral of the story is: to get the maximum performance out of your memory management system, you need to know how it works. This applies equally well to C++.