For my thesis/final year project, I tested out the effects of replacing dynamic memory allocation with static (stack-based) allocations with a view to automatically detecting and replacing them where safe, at compile time.
See the summary I wrote at the time, at Forgetful.