Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

Diskusia – Kopernikov model Slnečnej sústavy

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Lukáš Hruda
Tvůrce
Avatar
Lukáš Hruda:15.5.2013 21:33

Co ty memory leaky? :D

 
Odpovedať
15.5.2013 21:33
Avatar
Frunta
Tvůrce
Avatar
Odpovedá na Lukáš Hruda
Frunta:15.5.2013 22:09

Nevím, co to je memory leak.

 
Odpovedať
15.5.2013 22:09
Avatar
Зайчик
Člen
Avatar
Odpovedá na Frunta
Зайчик:15.5.2013 22:37

únik paměti? xD

Odpovedať
15.5.2013 22:37
Коммунизм для нашего будущего!
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovedá na Frunta
Lukáš Hruda:15.5.2013 22:37

Únik paměti. Alokuješ objekty, ale už je nedealokuješ. Operátor new vytvoří objekt na haldě a pouze vrátí pointer na něj, ten objekt pak ale musíš někde dealokovat, což ty už neděláš. Navíc, objekty nemusíš vytvářet pouze pomocí operátoru new, můžeš ho prostě deklarovat a pak se o dealokaci paměti nemusíš starat.

 
Odpovedať
15.5.2013 22:37
Avatar
Kit
Tvůrce
Avatar
Odpovedá na Frunta
Kit:16.5.2013 9:31

Programátoři, kteří se nechtějí zajímat o memory leaky, obvykle raději přesedlají na C# nebo Javu. Tam se o memory leaky moc starat nemusí, protože se za ně o to postará garbage collector.

Odpovedať
16.5.2013 9:31
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na Lukáš Hruda
David Hartinger:16.5.2013 9:33

Vidíš, toho jsme si nevšimli, snad to Frunta alespoň opraví :)

Odpovedať
16.5.2013 9:33
New kid back on the block with a R.I.P
Avatar
Frunta
Tvůrce
Avatar
Frunta:16.5.2013 14:29

Odpověď na: Lukáš Hruda, Kit, David Hartinger
Děkuji za upozornění. Ne, že bych se nechtěl zajímat o memory leaky, ale jednoduše jsem se domníval, že se to smaže s ukončením aplikace. Samozřejmě to opravím.

 
Odpovedať
16.5.2013 14:29
Avatar
Kit
Tvůrce
Avatar
Odpovedá na Frunta
Kit:16.5.2013 14:36

To se smaže s ukončením aplikace, ale je dobré si zvyknout po sobě uklízet kvůli možnosti použití toho kusu kódu v jiném programu, kde by už ty memory leaky mohly vadit.

Do tvého kódu jsem se nedíval, takže pokud tam v cyklu alokuješ další a další paměť, tak ten program dříve či později padne právě na memory leak.

Odpovedať
16.5.2013 14:36
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovedá na Frunta
Lukáš Hruda:16.5.2013 14:39

Ano, s koncem aplikace se uvolní veškerá paměť kterou program používal, paměť by se ale měla uvolňovat už ve chvíli, kdy ji přestaneš používat, většinou na té úrovni, kde byla paměť alokována.

 
Odpovedať
16.5.2013 14:39
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovedá na Frunta
Lukáš Hruda:16.5.2013 14:48

Mimochodem, uplně stačí, když nebudeš všechny objekty dělat dynamicky, v C++ můžeš objekt prostě deklarovat a ve spustě situacích to naprosto stačí.
Třeba místo...

Teleso* Slunce = new Teleso("Slunce", ucinit->sirka/2, ucinit->vyska/2, 0.0f, 1.0f, daysToUnit_360(25.0f), "files/images/Slunce.png", ucinit);

...můžeš udělat...

Teleso Slunce("Slunce", ucinit->sirka/2, ucinit->vyska/2, 0.0f, 1.0f, daysToUnit_360(25.0f), "files/images/Slunce.png", ucinit);

...nebo

Teleso Slunce = Teleso("Slunce", ucinit->sirka/2, ucinit->vyska/2, 0.0f, 1.0f, daysToUnit_360(25.0f), "files/images/Slunce.png", ucinit);

Poslední dva kódy jsou to samé. Jen pak Slunce nebude pointer na objekt, ale objekt sám. K jeho položkám pak nebudeš přistupovat pomocí operátoru -> ale .

Editované 16.5.2013 14:49
 
Odpovedať
16.5.2013 14:48
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!