Diskuze: omezení velikosti pole

C a C++ C a C++ omezení velikosti pole

Aktivity (1)
Avatar
petr.dar
Člen
Avatar
petr.dar:19.4.2016 19:04

čau lidi
připadá mi to jako blbost, ale když napíšu do objektu:

int number[];

s předem nespecifikovaným počtem prvků a pak tam začnu prvky přidávat, má to nějaký daný limit? Měl jsem za to, že to závisí jen na velikosti ramky...
Já tam teda neukládám int, ale objekty a chtěl jsem tam těch objektů dát přes 1000 a když to spustim, tak mi to načte jen přes 600 objektů, pak mi program zhavaruje...

 
Odpovědět 19.4.2016 19:04
Avatar
tomisoka
Redaktor
Avatar
Odpovídá na petr.dar
tomisoka:19.4.2016 19:21

Ono by tě to ani nemělo nechat zkompilovat. Jedná se o statické pole, takže musí předem vědět jak velké má být. Pokud nevíš jak velké to pole bude tak použij dynamické pole nebo vector(jen pro C++).
Jinak každá věc má nějakou předem určenou velikost, musí se vědět jak bude velká a kdy už za ní může být další věc. Když přesáhneš její velikost začneš používat paměť kde je něco jiného a pokud to není jiná tebou alokovaná paměť (kde to prostě přepíšeš a pak se budeš divit co to tam máš), tak spadne.

 
Nahoru Odpovědět 19.4.2016 19:21
Avatar
petr.dar
Člen
Avatar
petr.dar:19.4.2016 19:56

No jo, ale tu velikost můžu zadat pouze číslem, když tam chci zadat proměnnou, kterou si dříve vypočítám, tak to nejde... nebo já něco dělám blbě?

 
Nahoru Odpovědět 19.4.2016 19:56
Avatar
Odpovídá na petr.dar
Jakub Šárník:19.4.2016 20:00

Pokud vím, tak od standartu c99 je možné vytvořit statické pole s velikostí z proměnné...

 
Nahoru Odpovědět 19.4.2016 20:00
Avatar
tomisoka
Redaktor
Avatar
Odpovídá na petr.dar
tomisoka:19.4.2016 20:01

Velikost statického pole musíš znát již při kompilaci. Pokud ji neznáš (zadáváš ji proměnnou) tak použij dynamické pole.

 
Nahoru Odpovědět 19.4.2016 20:01
Avatar
petr.dar
Člen
Avatar
Odpovídá na tomisoka
petr.dar:20.4.2016 17:47

Ok, ale při mazaní

delete[] number;

už tam velikost psát nemusim že jo

 
Nahoru Odpovědět 20.4.2016 17:47
Avatar
Taskkill
Šéfredaktor
Avatar
Odpovídá na petr.dar
Taskkill:20.4.2016 17:52

presne tak

 
Nahoru Odpovědět 20.4.2016 17:52
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.