Nothing about lambdas requires heap allocation. See also: C++, Rust
If you return a pointer to a local variable that outlives the scope, the pointer would be dangling. Does that mean we should ban pointers?
If you close over a pointer to a local variable that outlives the scope, the closure would be dangling. Does that mean we should ban closures?
If you do want it, you have the option to, say, heap allocate.