Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2009, 23:02   #1
delphyok
Пользователь
 
Регистрация: 22.02.2009
Сообщений: 19
Печаль Не хватает памяти.Из-за того, что Паскаль старый?

Всем привет! Вот столкнулся с очередной проблемой на Паскале. Общаюсь с ним не так давно, но тем не менее, периодически натыкаюсь на его ограничение по размеру памяти. До этого успешно его обходил, поэтому, проблем не было. Но в этот раз обойти не получится, получается либо просто паскаль устарел, либо я чего-то не догоняю. Вот простейший пример, дана таблица чисел, скажем 1000 на 1000, типа byte, чтобы хранить такой массив данных потребуется примерно 1 мб памяти, что значительно больше 64кб сегмента данных. Лазил по различным учебниками в поисках решения, но так его не нашел. Все мои манипуляции с указателями ни к чему не приводили, вылетает ошибка, типа памяти мало и все тут. Подскажите, можно ли использовать всю доступную оперативную память на компьютере при выполнении программ, или все-таки есть ограничения? Вот скажем на данном примере, что тут можно сделать, чтобы в проге все-таки разместился мой массив? :
Код:
const
   max=1000;
var
   table:array[1..max,1..max] of integer;
   i,k,sum:integer;
begin
     for i:=1 to max do
         for k:=1 to max do
          begin
             sum:=sum+1;
             table[i,k]:=table[i,k]+sum;
          end;

     writeln('Всего элементов в таблице ',sum);
     readln;
end.
delphyok вне форума Ответить с цитированием
Старый 16.05.2009, 01:10   #2
OCTAGRAM
Oldschool geek
Форумчанин
 
Аватар для OCTAGRAM
 
Регистрация: 09.03.2009
Сообщений: 611
По умолчанию

В DOS окружении 640Кб обычной памяти. Это примерно то количество памяти, которое может быть адресуемо единомоментно. Если нужны большие объёмы, надо использовать EMS, XMS, UMB и т. п., они проецируют окна в памяти на разные участки выше мегабайта. Нужно поработать с одним участком — спроецировал окно, работаешь. Нужен другой участок — проецируешь окно на другой участок, работаешь дальше.

Паскаль не обеспечит поддержку на уровне языка. Но в принципе можно.


Сейчас, если в 32–битной системе нужно работать с объёмами памяти больше 4 Gb, решение аналогично: окно в памяти проецируется на разные участки большого куска памяти. И, также, как и во времена 16–битных систем, компиляторы никакой специальной поддержки на уровне языка при этом не оказывают.
If you want to get to the top, you have to start at the bottom

http://pascal.net.ru/
OCTAGRAM вне форума Ответить с цитированием
Старый 16.05.2009, 12:20   #3
delphyok
Пользователь
 
Регистрация: 22.02.2009
Сообщений: 19
По умолчанию

Вот как раз этой информации мне и не хватало. В книгах ни в одной не встретил, где бы четко было изложено какой потолок памяти в Паскале, пишут, что есть динамическая память и ее можно типа сколько угодно использовать, но примеры ее использования почему-то выше 200 кб не приводят . Теперь понятно почему. В общем смысл мне ясен, что даже если и есть такая возможность, то чтобы ею воспользоваться нужно сильно потрудиться, а EMS, XMS, UMB... это команды ассемблера, как я понял. Решил заглянуть в Дельфи, чтобы посмотреть как там обстоят дела с памятью, и с удивлением обнаружил, что оказывается все мои программы прекрасно там работают, а памяти хоть отбавляй, да и еще куча всяких полезных команд и прочих функций. Так что прощай Паскаль, да здравствует Дельфи
delphyok вне форума Ответить с цитированием
Старый 17.05.2009, 00:40   #4
Doholyan
Форумчанин
 
Регистрация: 26.04.2009
Сообщений: 270
По умолчанию

Ты....поспешил "ПОСЛАТЬ" ПАСКАЛЬ!!!!!
Doholyan вне форума Ответить с цитированием
Старый 17.05.2009, 15:49   #5
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

На сколько мне известно, в Win 95,98 этой проблемы нет, а вот XP строго выделяет 640 кб и не дает DOS программе лезть дальше в память.
Kostia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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