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