Aleksey Andreev <liuch@mail.ru> writes: > 11.09.2014 23:32, Dmitrii Kashin пишет: > >>>> Но всё равно получаю SegFault в следствие переполнения. >>> Дело ведь не в неявности вызова команды а в рекурсии. >>> Про неявный return ( ret ) я упомянул для того что бы показать где >>> освобождается стек. >> Простите, Алексей, я хочу уточнить одну деталь. Я правильно сейчас >> понимаю, что Вы утверждаете, что рекурсивно описанная процедура всегда >> порождает рекурсивный процесс, выедающий стек? > Выеданием стека я назвал не переполнение а активное его использование. > Если оптимизатор построил хвостовую, то стек не задействуется. На > сколько я помню разворачивается в цикл. > При нормальных условиях дефолтного размера стека хватает даже достаточно > глубоких рекурсиях. > Он нужен для хранения адреса возврата и, в зависимости от способа вызова > функции, параметров. > В первоначальном коде я не обнаружил условия выхода из рекурсии. > А значит у вас выедался стек при вызове функции + расход на выделение > памяти под класс в каждом вызове, > возможно выделение памяти производилось тоже на стеке. > Думаю именно в этом и была причина сегфолта - стек закончился в > следствии ничем не ограниченного выедания :) Это очень грустно. =/
Attachment:
pgpU1_k0RCrci.pgp
Description: PGP signature