11.09.2014 13:25, Dmitrii Kashin пишет:
>
>
> Вот так это примерно происходит:
> ----------------------------------------
> void
> march (Grid1D grid)
> {
> <...>
> Grid1D newgrid = make_step(grid, tau);
> march(newgrid);
> };
> ----------------------------------------
>
> Никак не пойму, что ж с ней не так-то: функция была вызвана, отработала,
> вернула результат. Значит кадр в стеке ей вроде бы уже не нужен. Но он
> остаётся. Почему?
Извините, код не смотрел, но из того что вижу поясню:
Вы из функции march вызываете еще одну march, таким образом не
освобождая стек вызовов.
Cтек освободится при вызове неявного return в конце ф-ции.
В данном случае стек тратится на сохранение точки возврата из функции,
но возврата не происходит.
С уважением, Алексей А.