tablica na 10 mln elementow c++

0

cze

probuje w visualu 2008 express edition stworzyc tablice na 10 mln elementow. Tablica jest typu int. No i niestety mi to nie wychodzi. Program uruchamiam z konsoli dosowej. Najwieksza tablice jaka udalo mi sie utworzyc to bylo na 100 tys elementow. Co zrobic zeby stworzyc wieksza? Prosze mnie poprawic jezeli zle rozumuje, ale skoro dzialam w systemi 32 bitowym to maks rozmiar tablicy to 2^32 elementow? Bo na pewno nie pracuje w 16 bitowym skoro tworzy mi tablice na 100 tys elementow.

0

Stwórz ją albo na stercie - new int[10000000], albo statyczną - static int k[10000000].
(ew vector).
Nie twórz tak dużych tablic na stosie.
Na stosie - zwykła tablica zadeklarowana w funkcji.

0

Kilka spraw:

  • 32bit pamięć oznacza tyle, że tyle zaadresować możesz; odlicz pamięć jądra (zwykle górne 2GB, których nie widzisz), odlicz stos, dynamicznie ładowane biblioteki, które w losowych miejscach pamięci lądują... efekt jest taki, że w najlepszym wypadku ciągły obszar ma niecałe 2GB...
  • fragmentacja sterty, efekt wielu alokacji i zwalniania - na stercie masz wiele mniejszych wolnych obszarów przedzielonych niewielką ilością małych przydzielonych; oczywiście faktycznie złe efekty są wyłącznie w przypadkach skrajnych - puste bloki mające nie więcej niż 100-200MB.
  • utworzyłeś tablicę lokalną, na stosie zamiast na stercie - stos ma tylko kilka megabajtów, formalnie system potrafi go powiększyć, ale to ma swoje granice - przekroczysz maksimum to program zostanie zamknięty.

To chyba tyle na ten temat.

0

Inna sprawa to zastanowienie sie, czy w ogole porzebujesz calej tablicy w pamieci na raz.

Pamietaj tez, ze system DOS zakonczyl swoj zywot w wersjach 6.0/6.22 jako standalone, a ostatnia wersja 8.0, zastosowana nawet w wersji Windows Vista pelni wylacznie role tylko dyskietki startowej i jest datowana na wrzesien 2000. DOS byl 16 bitowy. To w czym pracujesz to konsola Windows, a z DOS jedyne co ma wspolne to wyglad i nazwy podstawowych komend.

0

dzieki wielkie za pomoc

0

Szczawik, ej, DOS był w 9x/ME. W NT nigdy go nie było. Ergo - nie pisz głupot.

0

W NT jest podsystem NTVDM + dosowe aplikacje - edit czy command to są faktycznie aplikacje dosowe. Więc DOS jest, tylko wirtualizowany, jak XP w Seven.

0

@manfredek: masz Windows Vista? Wybierz dysk w Moj komputer i opcje Formatuj (nie musisz formatowac), na dole masz opcje (mam Windows w wesji angielskiej) Create an MS-DOS startup disk... i nie jest to zle nazwana opcja, bo pliki startowe sa rzeczywiscie MS-DOSem (w wersji 8.0, ostatniej, nie zmienionej od Windows ME). Sformatuj sobie dyskietke, odpal z niej kompa i wpisz polecenie: ver. Przedstawi sie jako MS-DOS.

Nawet w Windows XP, jak wpiszesz cmd odpalasz konsole windows, ale jak wpiszesz command, odpalisz, zgodnie z tym co napisal zuy dush 4p, 16 bitowa aplikacje powloki trybu MS-DOS.

Wikipedia: End of MS-DOS

//quetz: dokladnie.. tym wlasnie sie rozni cmd od command..

1 użytkowników online, w tym zalogowanych: 0, gości: 1