Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.27;
Скачать: CL | DM;

Вниз

Stack overflow   Найти похожие ветки 

 
Tolyan   (2003-02-17 10:38) [0]

Здраствуйте.
Помогите, если знаете что можно сделать.
Вкратце проблема.
Ком Р-133 32M RAM. Delphi 3
есть несколько переменных следующих типов:
linedat = array[1..512] of double;
InLineDat = array[1..256] of integer;
KodData = array[1..2] of InLineDat;
oneline = array[1..1024] of linedat;
outdata = array[1..1024,1..16] of linedat;
и т.д.
Вообщем было все нормально, пока не написал дополнительную
процедуру обработки (из одного массива (object зи парачки приведенных типов)
в другой outdata). После этого работать перестало. Т.е. при входе в процедуру,
в которой вызывается только что написанная возникает ошибка
"Stack overflow".
Может что в настройках компилятора можно изменить или комп лучше поменять?
Очень надо.
Жду с нетерпением
Tolyan


 
alxx ©   (2003-02-17 10:43) [1]

Нельзя ли нормально написать: что такое InLineDat, Как вызывается процедура?

Возможно, лучше было бы динамически выделять память.


 
Mike Kouzmine   (2003-02-17 10:49) [2]

Бесконечный цикл


 
han_malign ©   (2003-02-17 10:52) [3]

1. Массивы и рекорды нужно передавать в процедуру с var, out или const (procedure CalcArray( const InData: TByteArray; out OutData: TByteArray) - при передаче с var/const/out - в стек запихивается только адрес массива, иначе весь массив(обычно безболезненно забивается до 1Мб стека, потом возможны коллизии))
2. Обычно Stack Overflow возникает на вечной рекурсии...


 
Romkin ©   (2003-02-17 11:04) [4]

Но в этом случае скорее всего именно из-за размеров массивов, стоит только локальную переменную или параметр outdata объявить - и все... 67 метров примерно в стеке


 
Tolyan   (2003-02-17 11:26) [5]

Большой спасиб han_malign за совет. Обязательно попробую.
А память естественно динамически выделяю. Иначе и один массив не поместился бы.(это для alxx)


 
REA ©   (2003-02-17 11:58) [6]

>в стек запихивается только адрес массива, иначе весь массив
А динамические? Там вроде счетчик ссылок есть.


 
Tolyan   (2003-02-17 12:20) [7]

Попробовал передавать переменные с var, const. Помогло, но несильно.
Теперь в другом месте при динамическом выделении GetMem(adat,SizeOf(outdata))
( outdata тип в тексте вопроса, adat соответственно переменная данного типа)
выскакивает ошибка "Out of Memory"



Страницы: 1 вся ветка

Текущий архив: 2003.02.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
6-87614
NewGuest
2003-01-05 18:22
2003.02.27
Есть ли у кого пример... Какие компы есть в лок. сети...


3-87251
Mars
2003-02-11 17:05
2003.02.27
Соединение баз в SQL


1-87369
BOA_KAA
2003-02-17 17:04
2003.02.27
Динамические массивы внутри записи


14-87696
swordent
2003-02-11 15:14
2003.02.27
Такой вот компонентик


3-87345
Calm
2003-02-11 10:38
2003.02.27
Можно ли возвращать из ХП строку, содержащую символ #13?