Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

EStackOverflow with message Stack overflow

389
23 августа 2002 года
Dmitri
69 / / 20.08.2000
В моей программе было 1000 циклов с массивами по 1000 элементов. Когда я увеличил кол-во циклов до 10000 циклов и массивы до 10000 элементов, программа при запуске цикла выдает ошибку Project1.exe raised exception class EStack Overflow with message Stack overflow. Process stopped. Use Step or Run to continue.

Что это значит? Как исправить переполнение стека и что это такое, переполнение стека? Возможно, в программме очень сложные рачеты, и ей не хватает мощности? Просто новый проект у Вас так не выдаст ошибку. Тут надо более сложные алгоритмы. Может кто встречался с такой ситуацией?

[ Это Сообщение было отредактировано mike в 2002-08-24 2252 ]
473
24 августа 2002 года
Azazell
49 / / 20.12.1999
stack overwlow в основном встречается при использовании рекурсии... штука жестокая... обычно свидетельствует о том, что программист забыл написать код выхода изи рекурсии, тогда функция вызывает сама себе, передавая параметры в стек, но если это происходит очень много раз... то стек переполняется.
а как у тебя эети циклы работают... почему именно 10000???
389
24 августа 2002 года
Dmitri
69 / / 20.08.2000
Но ведь при 1000 все работало, и рекурсии вроде я не ставил. Расчет очень сложный, но почему все зависит от кол-ва циклов и кол-ва элементов массивов?
442
24 августа 2002 года
HexoGenus
121 / / 20.03.2000
Что означают твои 10000 циклов без применения рекурсии???
неужели ты ручками написал 10000 раз
что то типа
for (int i=0; i<Count;i++) {...}
for (int j=0; j<Count;j++) {...}
for (int k=0; k<Count;k++) {...}
...
не верится...
или у тебя один цикл но он делает 10000 оборотов???
если так то не создаешь ли ты в процессе выполнения цикла какие либо объекты чем то типа new?
Тогда просто нужно не забывать уничтожать эти объекты при проходе каждого круга...
Если я тебя неправильно понял то дай хоть строки самого цикла в описательном виде...
а еще лучше выложи проблемный кусок исходника программы в инете и дай на него ссылку...
389
24 августа 2002 года
Dmitri
69 / / 20.08.2000
У меня олин большой цикл 10000 раз, new не использую. Причем при 1000 раз все работает, повышаю до 10000, не работает.
4
25 августа 2002 года
mike
3.7K / / 01.10.2002
А кусочек кода можно ?
389
25 августа 2002 года
Dmitri
69 / / 20.08.2000
Можно. Исходник занимает около 5000 строк, поэтому привожу смысл программы

Button OnClick

//очень много переменных, ну очень много,
штук 300 массивов с [10000] элементов

for(int i=0;i<10000;i++){

//расчет с использованием if-else, while, и тех переменных, которые мы объявили в начале

}

Если приведу весь код, легче не станет. Интересно, что если for(i<1000) и массивы на [1000] элементов, стек не переполняется...
389
25 августа 2002 года
Dmitri
69 / / 20.08.2000
Можно. Исходник занимает около 5000 строк, поэтому привожу смысл программы

Button OnClick

//очень много переменных, ну очень много,
штук 300 массивов с [10000] элементов

for(int i=0;i<10000;i++){

//расчет с использованием if-else, while, и тех переменных, которые мы объявили в начале

}

Если приведу весь код, легче не станет. Интересно, что если for(i<1000) и массивы на [1000] элементов, стек не переполняется...
Аноним
Попробуй цикл поместить в функцию(не __fastcall), а в ButtonClick вызывать эту функцию
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог