Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Taulukon maksimikoko

KoodiNoppa [08.11.2007 21:30:41]

#

Onko taulukolla maksimikokoa? Jos on,
a)Mikä se on?
b)Voiko sen kiertää std:llä ilman monen taulukon luomista?
c)Onko kannattavaa tehojen ja muistin kannalta käyttää SDL_Surfacea liian suurien taulukoiden sijasta?
Kysymys on jo pariin kertaan tullut vastaan. Viimeksi ohjelma kaatui, kun asetin taulukon kooksi [~850][600], mutta kun ensimmäistä lukua pienensin yhdellä, ohjelma toimi taas. Kaatuessa tulee windowsin virheilmoitus. Kääntäjällä ei ollut mitään kerrottavaa. Onko vika koodissani vai onko taulukolla tosiaan maksimikoko?

T.M. [08.11.2007 21:55:04]

#

malloc():lla voi tehä niin ison taulukon ku vaa muistii riittää.

Markus [09.11.2007 10:11:05]

#

Jos luot taulukon pinoon, eli määrittelet sen näin: "int taul[KOKO];", maksimikoko on ilmeisesti pinon maksimikoko, joka voi vaihdella käyttöjärjestelmän mukaan.

Jos luot taulukon dynaamisesti, eli määrittelet sen näin:

// C++:
int *taul = new int [KOKO];
// C:
int *taul = (int *)malloc(KOKO*sizeof(int));

saa taulukko olla periaatteessa niin suuri kuin muistia vain riittää.

C++:ssä voit käyttää myös vector-luokkaa:

std::vector<int> taul(KOKO);

ps. Muista vapauttaa dymaamisesti luodun taulukon varaama muisti, kun et enää tarvitse taulukkoa.

Metabolix [09.11.2007 16:06:41]

#

Myöskään globaalilla taulukolla ei ole maksimikokoa muuten kuin muistin ja muistiavaruuden puolesta. 32-bittisessä tilassa siis ehdoton maksimi on 4 GiB, käyttöjärjestelmien ansiosta usein huomattavasti vähemmän, koska osa muistiavaruudesta on varattu ytimelle.

KoodiNoppa [10.11.2007 13:00:44]

#

Kiitos kaikille avusta! Ohjelma pyörii nyt ongelmitta.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta