|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.05.2009, 23:02 | #1 |
Пользователь
Регистрация: 22.02.2009
Сообщений: 19
|
Не хватает памяти.Из-за того, что Паскаль старый?
Всем привет! Вот столкнулся с очередной проблемой на Паскале. Общаюсь с ним не так давно, но тем не менее, периодически натыкаюсь на его ограничение по размеру памяти. До этого успешно его обходил, поэтому, проблем не было. Но в этот раз обойти не получится, получается либо просто паскаль устарел, либо я чего-то не догоняю. Вот простейший пример, дана таблица чисел, скажем 1000 на 1000, типа byte, чтобы хранить такой массив данных потребуется примерно 1 мб памяти, что значительно больше 64кб сегмента данных. Лазил по различным учебниками в поисках решения, но так его не нашел. Все мои манипуляции с указателями ни к чему не приводили, вылетает ошибка, типа памяти мало и все тут. Подскажите, можно ли использовать всю доступную оперативную память на компьютере при выполнении программ, или все-таки есть ограничения? Вот скажем на данном примере, что тут можно сделать, чтобы в проге все-таки разместился мой массив? :
Код:
|
16.05.2009, 01:10 | #2 |
Oldschool geek
Форумчанин
Регистрация: 09.03.2009
Сообщений: 611
|
В DOS окружении 640Кб обычной памяти. Это примерно то количество памяти, которое может быть адресуемо единомоментно. Если нужны большие объёмы, надо использовать EMS, XMS, UMB и т. п., они проецируют окна в памяти на разные участки выше мегабайта. Нужно поработать с одним участком — спроецировал окно, работаешь. Нужен другой участок — проецируешь окно на другой участок, работаешь дальше.
Паскаль не обеспечит поддержку на уровне языка. Но в принципе можно. Сейчас, если в 32–битной системе нужно работать с объёмами памяти больше 4 Gb, решение аналогично: окно в памяти проецируется на разные участки большого куска памяти. И, также, как и во времена 16–битных систем, компиляторы никакой специальной поддержки на уровне языка при этом не оказывают. |
16.05.2009, 12:20 | #3 |
Пользователь
Регистрация: 22.02.2009
Сообщений: 19
|
Вот как раз этой информации мне и не хватало. В книгах ни в одной не встретил, где бы четко было изложено какой потолок памяти в Паскале, пишут, что есть динамическая память и ее можно типа сколько угодно использовать, но примеры ее использования почему-то выше 200 кб не приводят . Теперь понятно почему. В общем смысл мне ясен, что даже если и есть такая возможность, то чтобы ею воспользоваться нужно сильно потрудиться, а EMS, XMS, UMB... это команды ассемблера, как я понял. Решил заглянуть в Дельфи, чтобы посмотреть как там обстоят дела с памятью, и с удивлением обнаружил, что оказывается все мои программы прекрасно там работают, а памяти хоть отбавляй, да и еще куча всяких полезных команд и прочих функций. Так что прощай Паскаль, да здравствует Дельфи
|
17.05.2009, 00:40 | #4 |
Форумчанин
Регистрация: 26.04.2009
Сообщений: 270
|
Ты....поспешил "ПОСЛАТЬ" ПАСКАЛЬ!!!!!
|
17.05.2009, 15:49 | #5 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
На сколько мне известно, в Win 95,98 этой проблемы нет, а вот XP строго выделяет 640 кб и не дает DOS программе лезть дальше в память.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
switch или что-нибудь типа того | ДядяМиша | PHP | 3 | 30.04.2009 08:17 |
что делать если комп хочет отформатировать карту памяти с информацией? | Александр Катаев | Компьютерное железо | 1 | 14.03.2009 14:11 |
Не хватает практики на C++ | Rembo | Свободное общение | 11 | 04.08.2008 18:36 |
Старый серер перенести на новый, а старый заглушить, при этом не потерять настроек. | Spartak | Помощь студентам | 1 | 28.01.2008 12:07 |
Программка для забивания физ.памяти. Паскаль | NikLik | Свободное общение | 8 | 25.11.2007 22:36 |