Форум: "Игры";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
ВнизStack overflow Найти похожие ветки
← →
scout (2003-05-03 20:31) [0]Ну беда!!! При запуске проекта вылетает сообщение:
Project lala.exe raised exception class EStackOverflow with message "Stack Overflow". Process stopped.
Что это такое и как с этим бороться?
← →
Anatoly Podgoretsky (2003-05-03 20:49) [1]Бережнее относиться к стеку, не бездонный.
← →
default (2003-05-03 21:36) [2]Anatoly Podgoretsky © (03.05.03 20:49)
Юмор однако!
И дно у стека есть хе
← →
Aldor (2003-05-03 22:04) [3]Означает переполнение стека. Надо смотреть код. Стек заполняется, например, при объявлении локальных переменных и вызовах процедур. Наиболее частая причина переполнения стека - слишком глубокая рекурсия, возможно без условия выхода.
Иногда ошибку можно найти, используя отладочное окно Call Stack
(View -> Debug Windows -> Call Stack). Удачи!
← →
scout (2003-05-04 21:45) [4]> Наиболее частая причина переполнения стека - слишком глубокая рекурсия, возможно без условия выхода.
Ну ты и загнул попроще нельзя.
← →
Arch-vile (2003-05-04 23:19) [5]> > Наиболее частая причина переполнения стека - слишком глубокая >рекурсия, возможно без условия выхода.
>Ну ты и загнул попроще нельзя.
рекурсия - обратный вызов процедуры, т.е. когда она сама себя вызывает. Например
procedure xxx(i:integer);
begin
xxx(i);
end;
вот тебе и обратный вызов, рекурсия. может быть через 2-3 функции-процедуры:
procedure xxx(i:integer);
begin
yyy(i);
end;
procedure yyy(i:integer);
begin
xxx(i);
end;
← →
Arch-vile (2003-05-04 23:21) [6]ну типа того, может быть сложнее, и не обязательно
i
в качестве переменной ;)
← →
k-man (2003-05-05 18:35) [7]К вопросу понимания стека...
Попытаюсь предположить почему при глубокой рекурсии переполнятся стек.
Насколько я знаю 1)стек не бездонный.
2)в него при вызове процедур ложатся все ( не только они но все же по-моему они здесь стек и забивают) К вопросу понимания стека...
Попытаюсь предположить почему при глубокой рекурсии переполнятся стек.
Насколько я знаю 1)стек не бездонный.
2)в него при вызове процедур ложатся все передаваемые аргументы(не только они но все же по-моему они здесь стек и забивают).
Может быть поэтому при глубокой рекурсии стек переполняется.
Так как эти параметров, точек возврата и т.д. становится слишком много..
Хотя это лишь предположение.... Вполне возможно ошибочное..
← →
Aldor (2003-05-05 20:16) [8]2k-man
Все правильно, в стеке резервируется место для аргументов функции, возвращаемого значения функции, всех локальных переменных функции, и так же еще место для указателя, имеющего "внутреннее" предназначение. Таким образом можно примерно подсчитать, сколько места в стеке займет рекурсия заданной глубины.
← →
k-man (2003-05-05 22:00) [9]А вот что интересно: От чего зависит размер стека?
И можно ли его как-то контролировать? Лично я сомневаюсь...
← →
Palladin (2003-05-06 14:17) [10]
> k-man © (05.05.03 22:00)
от установки
{$M}
← →
Alek Aaz (2003-05-07 03:54) [11]ИМХО. Если в алгоритме есть логическая ошибка {$M} не поможет. Программа засрет все что можно.
← →
Palladin (2003-05-07 08:47) [12]естественно
← →
Aldor (2003-05-07 09:36) [13]Как? У ваc еще нет нового процессора Intel Pentium V, выполняющего бесконечный цикл за 6 секунд? :)))
← →
k-man (2003-05-07 12:38) [14]
> Как? У ваc еще нет нового процессора Intel Pentium V, выполняющего
> бесконечный цикл за 6 секунд? :)))
Слышал что это из рекламы суперкомпа Cray.
← →
Aldor (2003-05-07 21:51) [15]2k-man
Не важно, это просто шутка :)
← →
Aldor (2003-05-07 21:51) [16]2k-man
Неважно, это просто шутка :)
← →
k-man (2003-05-07 22:34) [17]Неплохая шутка-)
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.038 c