| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Object Pascal: кроссплатформенные технологии > нехватка памяти в куче |
| Автор: bullvinkle 24.12.2008, 22:37 | ||
| Написал программу. Пока что она просто сортирует один и то же набор тестовых записей разными способами сортировки, и разным количеством элементов. Но возникает ошибка. В хелпе почитал, советы. Которые понял - те сделал, но ошибка та же. Плюс ко всему я еще планирую туда добавить еще один метод, который будет, как и все остальные, выполняться три раза. И еще надо засекать время выполнения каждого метода. Вобщем еще не конец, а уже проблемы. Что Вы мне можете посоветовать в этом случае?
П.С. Я чет представить себе не могу, как создают огромные проекты, если даже на такой учебной программе уже не хватает памяти |
| Автор: volvo877 25.12.2008, 16:17 | ||
У тебя проблемы - вообще в самом начале:
Будет у тебя в файле больше, чем 1500/9 = 166 строк - вылетишь за пределы массива, потому что P - накапливается, или (если отключен Range Check) - просто будешь портить содержимое соседних переменных. В любом случае - веры результатам нет никакой. Приведи свой файл 2.txt, кстати... |
| Автор: bullvinkle 25.12.2008, 19:39 |
| У меня в файле 2.тхт 1500 строк. Я все же не могу понять, почему не может быть более 166. У меня в файле 1500 строк и в каждой строчке массива 1500 элементов. Вроде все сходится. Внизу мой файл 2.тхт. |
| Автор: bullvinkle 26.12.2008, 02:18 | ||
Оставил от программы всего лишь вот такой код
все равно ошибка та же. Неужели надо искать другой подход к решению задачи? |
| Автор: volvo877 26.12.2008, 09:36 |
| У тебя что-то не в порядке с системой, либо Паскаль глючит и компилирует так, что при запуске выбивает ошибку, либо виртуальная машина, под которой это все крутится, сбоит, либо память... Потому что и твой первый код (на файле длиной 150 строк), и второй прекрасно отрабатывают... Скриншот - в аттаче... Теперь насчет: Ничего не сходится... У тебя P изменяется от 0 до скольки? Ну, записал ты 1500 строк при J = 1, перешел на J = 2, переоткрыл файл, увеличил значение P (не забыл, после прочтения всего файла оно у тебя равно 1500), попытался записать прочитанную строку в ячейку A[1501, 2], получил выход за пределы массива, вылетел... Так понятнее? При переоткрытии файла P обнулять не пробовал? |
| Автор: bullvinkle 26.12.2008, 16:53 | ||
| Спасибо, действительно не правильно добавлял слова в массив. Но ошибка с переполнением возникает как у меня дома, так и в универе. Видимо надо как то по-особенному настроить паскаль. Может кто знает? Задачу уже решил чуть другим способом и сдал. Может кому по учебе надо ("Проведение вычислительных экспериментов с алгоритмами внутренней сортировки"), или просто интересно, вот код (правда время не всегда показывает как надо):
|