![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Maverick |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1307 Регистрация: 22.9.2003 Где: Odessa, Ukraine Репутация: 2 Всего: 10 |
Здравствуйте....
Жуткая вещь... В проге использую функцию, производящую большой объем вычислений.... Для этого ей отправляется большой массив данных... array пока статический, в будущем будет динамический... Так вот до определенного размера, прдеположим 300х300, все работает нормально... Если увеличить размер массива, то все - переполнение стека... Черт, получилось, что при тестировании все работало, а как грузанул нормальные данные - все заело.... Может подскажет кто-нибудь.... Этот самый стек разве не должен бы свапиться на винт при нехватке памяти?... Его размер как-то можно увеличить? Или вообще, что можно предпринять? Заранее благодарен.... |
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 1 Всего: 34 |
стек тут не причем
нехватка памяти тоже видимо ты своим массивом на сам стек залазиеш либо передаеш с какойто функ мало или много параметров -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| Maverick |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1307 Регистрация: 22.9.2003 Где: Odessa, Ukraine Репутация: 2 Всего: 10 |
Ну как тебе сказать....
Предположим описываю статический массив размеров 300х300... Все отрабатывает прекрасно.... Стоит описать массив 305х305 - все, возникает ошибка переполнения стека.... причем в первой строке вызываемой функции.... прям на begin.... Осюда я сделал вывод, что вызывает эту ошибку размер массива при передаче.... Сам на стек я не лезу, незачем... Так и недостаток параметров тоже не проблема, другая ошибка была бы, да и функций перегружаемых нет.... |
|||
|
||||
| Jey_k |
|
|||
![]() WEB-командир ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 4149 Регистрация: 16.11.2003 Где: Москва Репутация: 1 Всего: 61 |
Maverick
Поюзай динамический массив, перед его использованием, вызывают процедуру GetMem(<имя массива>,<сколько места надо>); Она решит твои проблемы с размерами стэка З.Ы. Стандартный ехе-шник имеет фиксированный стэк, сейчас не помню уже сколько, а своим статическим массивом (а не динамическим с дополнительным выделением памяти) ты его переполняешь. Это сообщение отредактировал(а) Jey_k - 31.3.2004, 11:21 |
|||
|
||||
| Maverick |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1307 Регистрация: 22.9.2003 Где: Odessa, Ukraine Репутация: 2 Всего: 10 |
Ну я в принципе и планировал перейти на динамический массив... счас переделываю, потому что планировать планировал, а сам индексы массивов все с 1 начал....
Просто не думал, что это проблему со стеком решит....
а как расчитать сколько места надо? неужели кол-во памяти на 1 элемент(ориентир на тип)*кол-во элементов? SetLenght сама не расчитывает это дело? |
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Все можно сделать с помощью SetLength. Вот простой пример:
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| Jey_k |
|
|||
![]() WEB-командир ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 4149 Регистрация: 16.11.2003 Где: Москва Репутация: 1 Всего: 61 |
Maverick
Приведу пример с записью файла в массив, так понятней будет
Это сообщение отредактировал(а) Jey_k - 31.3.2004, 11:46 |
|||
|
||||
| Maverick |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1307 Регистрация: 22.9.2003 Где: Odessa, Ukraine Репутация: 2 Всего: 10 |
Браво... все работает....
Огромное спасибо за хелп, ребята... А то я с утра чуть в обморок не упал.... Модератор, сорри за оффтоп.... Просто благодарность распирает.... Пойду пообедаю на радостях... Это сообщение отредактировал(а) Maverick - 31.3.2004, 12:06 |
|||
|
||||
| Jey_k |
|
|||
![]() WEB-командир ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 4149 Регистрация: 16.11.2003 Где: Москва Репутация: 1 Всего: 61 |
Maverick
чей пример заработал? |
|||
|
||||
| Maverick |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1307 Регистрация: 22.9.2003 Где: Odessa, Ukraine Репутация: 2 Всего: 10 |
Ну раньше я обрабатывал динамические массивы в стиле <Spawn>....
Поэтому применил SetLength... Чтоб долго не разбираться.... сроки-сроки... Да и под мою задачу больше подходит. Просто пора бросить привычку писать на статических, а потом превращать их в динамические.... Я раньше так не обламывался, не было таких объемов... Jey_k твой пример я тоже в архив зарыл.... на всякий случай.... Еще раз спасибо всем.... |
|||
|
||||
| Jey_k |
|
|||
![]() WEB-командир ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 4149 Регистрация: 16.11.2003 Где: Москва Репутация: 1 Всего: 61 |
Maverick
да не за что в общем. Обращайся |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
А где оффтоп ? Выражение благодарности - это не оффтоп. Наоборот, желательная часть завершения темы. -------------------- С уважением, г-н Посол. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |