Zdravím,
napsal jsem tento kód a překladač mi nehlásil žádnou chybu.
Chtěl bych se zeptat, jestli je bezpečné takto paměť 2x alokovat, ale jednou smazat.
int * x = new int [10];
x = new int [100];
delete[] x;
díky.
Zdravím,
napsal jsem tento kód a překladač mi nehlásil žádnou chybu.
Chtěl bych se zeptat, jestli je bezpečné takto paměť 2x alokovat, ale jednou smazat.
int * x = new int [10];
x = new int [100];
delete[] x;
díky.
#1 Passassa
A nemůžeš si odpovědět sám???
Logicky, když nějakou paměť zabereš, měl bys ji po sobě uvolnit. Pokud tak neučiníš, paměť zůstane zabraná. Když to zopakuješ víckrát, volné paměti bude ubývat. Když to bude hodněkrát (při nějakém zpracování velkého množství údajů v cyklu) tak ti může paměť úplně dojít a program skončí s chybou nedostatek paměti...
Překladači je to šumafuk, jestli po sobě uklízíš nebo ne, to je přece na tobě...
Pokud na to použiješ nějaký program na správu paměti (v Cčku/Linux je to valgrind). Je to tak že vytvoříš memory leak / ztratíš referenci na jednou alokovanou pamět a i kdyby si jí chtěl někdy v budoucnu uvolnit, tak se ti to nepovede.
http://www.cprogramming.com/…algrind.html
Všechno co říkal JoDiK je pravda :)
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku