Or, you know, actual garbage collection (generational, JVM-style)
In languages like Nim and D, where all C++ allocation mechanisms are available alongside a GC heap, there are plenty of ways to improve performance.
Especially when the lifecycle cost of the corner case debugging is folded in.
[1] https://sites.google.com/site/lehijujitsu/slow-is-smooth-smo...