Dobrý den,
chtěl bych se zeptat jak vytvořit pole, které je extra velké př.
long long pole[500000];
program se mi s tímto polem přeloží, ale program stejně nefunguje, nedokáže s tím polem pracovat.
Děkuji za odpověď :-)
#1 Hlavinka
staticky vytvářené proměnné se vytvářejí na stacku a ten má omezenou velikost, danou OS. Pokud to alokuješ dynamicky (na heapu), tak by to mělo fungovat.
Ikdyž nechápu na co potřebuješ tak obrovské pole.)
long long *pole = (long long*) malloc( 500000 * sizeof( long long ) );
:DD hej je blbé přijít na to jak to ošidit :-) napadlo mě to pole rozebrat na více rozměrů, takže ošidím tu velikost stacku, což zřejmě funguje když mi to jede :-) (a navic ta velikost pole je určena vynásobenými velkými prvočísly :-) 510510 = 2*3*5*7*11*13*17)
Neošidíš nic. Buď to na zásobníku nemáš, nebo máš a pak ho zase vyčerpáš.
Řešení je zvětšení zásobníku, nebo umístění mimo zásobník - statickou alokací(rezervací) použitím globálního pole nebo statického lokálního pole, nebo dynamickou alokací na haldě.
A pro zajištění teoretického rychlejšího přístupu v podmínkách, které stejně nenastanou, bys musel udělat víc, než jen vrazit 4MB na zásobník.
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku