![]() |
Модераторы: volvo877, Snowy, MetalFan |
![]() ![]() ![]() |
|
Igor_K |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 4.2.2008 Где: Kyiv Репутация: нет Всего: нет |
Добрый вечер, программисты.
Пишет вам ламер еще тот ![]() Вообщем написал лабу, достаточно объемную. 1200 строк кривейшего кода. Работает, но после длительного пользования ею некоторое время, она вылетает с ошибкой Error 202: Stack overflow error.. Я так понял, что это связано с нехваткой памяти, типа... Я перевел фрагменты кода, гдте требуется достаточно много памяти на динамическую память... Поюзать программу стало можно дольше, но всеравно через определенное время юзания она вылетает с этой ошибкой. С чем это может быть связано? Можно ли очистить этот стек? Я начинающий в программировании и многого еще не понимаю. Я увеличил размер стека при компиляции, но всеравно походу не хватает. Еще заоодно задам вопрос. Я так понял, что указатель на память нельзя использовать как счетчик цикла. Или можно? Спасибо большое за ответ. |
|||
|
||||
volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
Большой размер процедур/функций, большие локальные массивы или просто много локальных переменных (они размещаются именно в стеке), рекурсия (чем глубже - тем, соответственно, быстрее наступит переполнение стека). Можешь привести код? Так просто можно будет гораздо быстрее выяснить истинную причину нехватки стека (если не хочешь выкладывать здесь - можешь выслать на "мыло" volvo71<мяу>yandex<dot>ru)...
|
|||
|
||||
Igor_K |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 4.2.2008 Где: Kyiv Репутация: нет Всего: нет |
ок. я щяс вышлю. Просто не хочу позориться тут с таким кривым кодом.
Добавлено через 13 минут и 11 секунд Я выслал. Она очень кривая. Компилить лучше в ТурбоПаскаль. |
|||
|
||||
volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
Как я и говорил, у тебя рекурсия, причем там, где ты ее и не видишь, наверное: процедура addtodb вызывает mainpage, а mainpage в свою очередь вызывает addtodb. Это неправильная структура программы. Должна быть основная процедура или функция, и из нее - вызов функций, по окончанию работы функции управление должно возвращаться назад (естественным путем, подпрограмма завершилась - управление вернулось к вызвавшей ее части) в основную подпрограмму, а не вызывать эту самую подпрограмму.
Вот когда ты вызываешь из первой процедуры вторую, а из второй - первую, получается рекурсия, причем не простая, а косвенная, которая и пожирает память (больше, чем обычная, естественно, все же заталкивается в стек, который не освобождается, а только заполняется)... Добавлено через 1 минуту и 4 секунды А вот это ты зря. Некоторые вещи FreePascal-ем ловятся "на ура", зачем же упускать такую возможность? ![]() |
|||
|
||||
Igor_K |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 4.2.2008 Где: Kyiv Репутация: нет Всего: нет |
volvo877, спасибо большое за помощь!!!
Я думал так можно. Теперь буду знать, что нельзя. Извини, репутацию не могу добавить... Постов у меня не хватает. Добавлено через 1 минуту и 34 секунды В фри-паскаль у меня проблема с таблицей. Криво отображается. |
|||
|
||||
Igor_K |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 4.2.2008 Где: Kyiv Репутация: нет Всего: нет |
Переделал программу. Вроде теперь такого не наблюдаю.
А можно ли вообще очистить этот стек? Это так вопрос для саморазвития. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi" | |
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |