![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
размер стека [D7, Win2k, WinXP]
ghg © (2004-08-06 19:22:00)имеем некую расчетную процедуру в которой при задании большого числа элементов не хватает размера стэка
вопрос: какой максимальный размер стэка можно задать для приложения, и какие есть способы уменьшения пользования стэка
ps: переписать расчетную процедуру не предлагать (не я писал) :)
ghg (2004-08-06 21:15:00) [1]обратная трехмерная для геофизики
правда имно память раньше кончится
TUser (2004-08-06 21:02:00) [2]Есь какая-то директива компилятора, уоторая устанавливает максимальный размер стека. Хотя надо очень постараться, чтобы придумать задачу, для которой действительно надо использовать эту директиву.
ghg (2004-08-06 20:01:00) [3]>Юрий Зотов © (06.08.04 19:59) [7]
спасибо
половину не знал
Юрий Зотов (2004-08-06 19:59:00) [4]> ghg © (06.08.04 19:22)
> какие есть способы уменьшения пользования стэка
1. Избегать рекурсивных алгоритмов.
2. Избегать длинных цепочек вызова процедур и функций. Например, короткие процедуры можно заменить их же кодом "по месту". Хотя это и не лучший стиль, но если уж ничего другого не остается, то деваться некуда.
3. Как можно меньще локальных переменных в процедурах и функциях и как можно меньший размер этих переменных. Например, можно использовать глобальные переменные, хотя это тоже не лучший стиль.
4. Как можно меньше параметров в процедурах и функциях (желательно - не более 3-х: первые 3 параметра по умолчанию передаются не через стек, а через регистры) и как можно меньший размер этих переменных (желательно - не более 4-х байт: например, вместо передачи больших данных можно передавать их адреса).
ghg (2004-08-06 19:54:00) [5]отлично
по ссылке написано что максимально возможный размер стэка $7fffffff
у меня же больше чем $01000000 не делается
в чем может быть причина?
begin...end (2004-08-06 19:44:00) [6]Вот здесь 3-й пункт почитай:
http://delphiworld.narod.ru/base/compiler_directives.html
ghg (2004-08-06 19:40:00) [7]>begin...end © (06.08.04 19:36) [3]
блин объясню подробнее
В этом вот поле memory side->Max stack size у меня задано
$01000000
больше не делается, это не делается больше в принципе или я еще что то не сделал для увеличения ?
begin...end (2004-08-06 19:36:00) [8]Откуда ж кто знает, какие у тебя настройки?
Project -> Options -> Linker -> Memory Sizes
ghg (2004-08-06 19:31:00) [9]максимальный размер какой?
Anatoly Podgoretsky (2004-08-06 19:27:00) [10]В настройках среди
Ну раз переписывать нельзя, то не о чем и говорить.