Каждая функция может использовать стек, даже если в некоторых программах вы не получите вложенность вызовов функций. One () вызывает два () два вызова, три () и т. Д.
Так что если функция одна имеетлокальные переменные A, B, C в стеке, затем он вызывает две, у двух есть две переменные, которые он использует E и F в стеке.Тогда три имеет G и H в стеке.Если вы не восстановите указатель стека туда, где он был при вводе трех, при возврате к двум он будет думать, что он обращается к E и F, но вместо этого будет обращаться к G и H или к чему-то еще, в зависимости от фрейма стека для трех.() функция.
Вы не получаете утечку памяти, вы получаете сбой.Иногда вам везет и вы выживаете, это может быть природой кода для этих функций, но в целом это приведет к сбою вашего скомпилированного кода для функций более высокого уровня, который вызвал вас.
Теперь это утечка памяти как в том смысле, что одна функция уничтожает кого-то, но это точно.
В случае процессоров, которые используют стек для возвращаемых значений, это только усугубляет падение, сбой или странное поведениегарантированнее и хуже.