[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Продавленный стек



11.09.2014 13:25, Dmitrii Kashin пишет:

>
>
> Вот так это примерно происходит:
> ----------------------------------------
> void
> march (Grid1D grid)
> {
>   <...>
>   Grid1D newgrid = make_step(grid, tau);
>   march(newgrid);
> };
> ----------------------------------------

>
> Никак не пойму, что ж с ней не так-то: функция была вызвана, отработала,
> вернула результат. Значит кадр в стеке ей вроде бы уже не нужен. Но он
> остаётся. Почему?

Извините, код не смотрел, но из того что вижу поясню:
Вы из функции march вызываете еще одну march, таким образом не освобождая стек вызовов.
Cтек освободится при вызове неявного return в конце ф-ции.
В данном случае стек тратится на сохранение точки возврата из функции, но возврата не происходит.

С уважением, Алексей А.


Reply to: