Program wyłącza się po próbie deklaracji tablicy z 50 000 elementów - jak to rozwiązać?

0

W programie w c++ potrzebuję dwóch tablic o rozmiarach 50 000. Niestety program już po uruchomieniu się wyłącza... Jak rozwiązać ten problem?

int a[500000]; int b[500000];
0

zdefiniowac ja dynamicznie za pomoca operatora new

0

A jak to się robi?

1
static int a[500000],b[500000];
0

A czy mógłbyś powiedzieć dlaczego ze statyczną zmienną to działa a ze zwykłą nie?
Statyczna tablica zajmuje mniej pamięci?

0

statyczna jest na stercie a nie na stosie

0
Wibowit napisał(a):

statyczna jest na stercie a nie na stosie

A Wikipedia uważa że na stercie są dynamiczne zmienne... Więc kto ma rację?
http://pl.wikipedia.org/wiki/Sterta_(informatyka)

3
maro1 napisał(a):
Wibowit napisał(a):

statyczna jest na stercie a nie na stosie

A Wikipedia uważa że na stercie są dynamiczne zmienne... Więc kto ma rację?
http://pl.wikipedia.org/wiki/Sterta_(informatyka)

Przecież napisałem wyżej w komentarzu. Statyczne dane są albo w data albo w bss. W data są te, które zostały jawnie zainicjalizowane (czymś innym niż zera) w kodzie, te (niejawnie) inicjalizowane zerami są w bss. To rozdzielnie wynika z tego, że jeżeli coś jest jawnie zainicjalizowane to ta wartość musi zostać zapisana w pliku obiektowym, a zer się nie zapisuje - dane z bss są zerowane podczas uruchomienia programu.

AFAIK standard mówi tylko, że ma to wszystko "gdzieś" być wsadzone w taki sposób, aby było dostępne w odpowiednich zakresach - czy to w funkcji, czy jako globalna zmienna itd.

0

Jeśli to mają być tablice statyczne, to sposób zaprezentowany przez użytkownika _13th_Dragon wydaje się najlepszy. W przeciwnym wypadku użyj klasy std::vector. Nie używaj gołego new, to tylko okazja do popełnienia błędu.

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