Dodaj do ulubionych

[pascal]-Problem z tablicą

08.01.06, 12:43
Witam
Mam sobie program, od którego chce sobie dodac tablice typu boolean i ja
wyzerowac, wiec robie sobie tak:
program costram;
type
Tz:array[1..1000000000]of boolean; {miliard}
var
i:longint,longword???
wlasnie czym ja wyzeruje ta bablice?
for i:=1 to 1000000000 do
begin
T[i]:=false;
end;
program niby ladnie sie kompiluje ale nie mozna go uruchomic, dostaje
komunikat:"System nie moze wykonac okreslonego programu"
i wiem ze to wina tych tablic, bo bez nich program dziala dobrze. Robie to w
freepascalu.
Obserwuj wątek
    • jasnoniebieski.5 Re: [pascal]-Problem z tablicą 08.01.06, 13:13
      Dla 100 000 000 {stu milionow} program dziala dobrze, ale na miliardzi sie
      sypie, a ja potrzebuje wlasnie tak duzej tablicy...co radzicie zrobic?
    • mx-5 Re: [pascal]-Problem z tablicą 08.01.06, 13:14
      Nie jest mozliwe zadeklarowanie tak wielkiej tablicy.
      Architektura procesora x86 zaklada podzial pamieci na segmenty tzn. bloki dlugosci
      65 536 bajtow.Procesory 486 i lepsze sa juz wolne od tego ograniczenia, jednak
      aby wykorzystac pamiec potrzebuja wsparacia systemu operacyjnego.
      Pascal niestety jest dosc stary(!!!) i rozmiar tablicy musi miec maksymalnie
      65 520 bajtow( pare odchodzi na informacje o segmencie ).

      Tak bylo w Turbo Pascalu, ktory dzialal pod DOS`em
      Free Pascal jest juz 32 bitowy, ale to wciaz Pascal i chyba po prostu troche
      przesadzasz ;)

      A tak na marginesie, nawet gdyby to bylo mozliwe, to zadeklaowanie tablicy
      wielkosci 1 mln + jeszcze jej wyzerowanie to niesamowicie olbrzymi koszt
      pamieciowy ! Zdecydowanie odradzam cos takiego, to masochizm :))

      Pozdrawiam!
      • mx-5 Re: [pascal]-Problem z tablicą 08.01.06, 13:29
        Sprawdzilem dokladnie - Free Pascal jest juz wolny od ograniczenia wielkosci
        segmentu.
        Ty chcesz zadeklarowac tablice 1+ 9 zer bajtow.
        Czyli 976 562 kilobajta czyli 953 MB ;) czyli prawie 1 GB
        Gdybys mial z 1.5 GB ramu w kompie to by poszlo, ale nawet u mnie na 1.24 GB nie
        idzie :]

        Zreszta nie musisz deklarowac takiej tablicy.
        Poza tym w regulaminie pisze, ze twoj program moze zajmowac max 32 mb pamieci.
        (pkt VI.4 regulaminu) no i oczywiscie nie wolno korzystac z funkcji crt.
        • jasnoniebieski.5 Re: [pascal]-Problem z tablicą 08.01.06, 13:40
          Sprawdz poczte :)
          Aha, no ale oczywisice chcialem zadeklarowac tablice jako boolean, wiec
          poczekaj, niech policze...miliard bitow=125000000bajtow=125000KB=125MB...czyli
          faktycznie, troche przekroczylbym max dopuszczalna dostepna pamiec :)
          wiec nie mam juz pomyslu :/

Nie pamiętasz hasła

lub ?

 

Nie masz jeszcze konta? Zarejestruj się

Nakarm Pajacyka