См. Ответ Илии. Но, чтобы добавить немного больше контекста, Бейкер Чейни о технике MTA был хорошо известным приемом для реализации правильной рекурсии хвоста, которая использовала стек C в качестве детского (как в GC поколений) для кадров продолжения и других объекты. Вместо того, чтобы держать стек небольшим (как это делают большинство реализаций хвостовой рекурсии), этот метод позволяет стеку некоторое время расти, а затем очищает его большим скачком (longjmp
, execption, что угодно) время от времени. И прежде чем очистить стек, вы копируете все живые вещи из него в кучу.
Это прекрасно работает, если вы можете и хотите отслеживать стек и копировать объекты из стека в кучу. В статье Eli cited (Продолжение обобщенной проверки стека) рассказывается об адаптации трюка к «управляемым» платформам, где вы не можете проверить стек напрямую.