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?
malloc():lla voi tehä niin ison taulukon ku vaa muistii riittää.
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.
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.
Kiitos kaikille avusta! Ohjelma pyörii nyt ongelmitta.
Aihe on jo aika vanha, joten et voi enää vastata siihen.