Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Free Pascal, Pascal ABC и другие _ FP Run-time errors

Автор: compiler 10.07.2007 19:36

Добрый день!
из-за чего может случаться переполнение стека?
Заранее благодарен.

Автор: volvo 10.07.2007 19:55

Рекурсия глубокая, или большие массивы передаются по значению в процедуры/функции, или размер локальных переменных превышает размер стека (нужное подчеркнуть)... Возможны и варианты; чтобы сказать точнее - надо смотреть код.

Автор: compiler 10.07.2007 20:03

Цитата(volvo @ 10.07.2007 15:55) *
Рекурсия глубокая...или размер локальных переменных превышает размер стека
а какая рекурсия глубокая? и как узнать размер стека?

Автор: volvo 10.07.2007 20:13

Может и при 5-ти уровнях переполняться:

procedure x(level: integer);
var arr: array[1 .. 15000] of integer;
begin
if level > 5 then exit;
x(level + 1);

end;

begin
x(0);
end.



Цитата
как узнать размер стека?
Узнать - Options -> Memory Sizes
Изменить - {$M stacksize, heapsize}

Автор: compiler 10.07.2007 20:41

Цитата(volvo @ 10.07.2007 15:55) *
чтобы сказать точнее - надо смотреть код.
можна я тебе покажу код в привате?

Автор: volvo 10.07.2007 20:58

Ну, покажи smile.gif