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

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



Aleksey Andreev <liuch@mail.ru> writes:

> 11.09.2014 23:32, Dmitrii Kashin пишет:
>
>>>> Но всё равно получаю SegFault в следствие переполнения.
>>> Дело ведь не в неявности вызова команды а в рекурсии.
>>> Про неявный return ( ret ) я упомянул для того что бы показать где
>>> освобождается стек.
>> Простите, Алексей, я хочу уточнить одну деталь. Я правильно сейчас
>> понимаю, что Вы утверждаете, что рекурсивно описанная процедура всегда
>> порождает рекурсивный процесс, выедающий стек?
> Выеданием стека я назвал не переполнение а активное его использование.
> Если оптимизатор построил хвостовую, то стек не задействуется. На
> сколько я помню разворачивается в цикл.
> При нормальных условиях дефолтного размера стека хватает даже достаточно
> глубоких рекурсиях.
> Он нужен для хранения адреса возврата и, в зависимости от способа вызова
> функции, параметров.
> В первоначальном коде я не обнаружил условия выхода из рекурсии.
> А значит у вас выедался стек при вызове функции + расход на выделение
> памяти под класс в каждом вызове,
> возможно выделение памяти производилось тоже на стеке.
> Думаю именно в этом и была причина сегфолта - стек закончился в
> следствии ничем не ограниченного выедания :)

Это очень грустно. =/

Attachment: pgpU1_k0RCrci.pgp
Description: PGP signature


Reply to: