NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.

Diskuze: Pochopení struktur

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Jak se ti líbí článek?
Před uložením hodnocení, popiš prosím autorovi, co je špatněZnaků 0 z 50-500
Jak se ti kurz líbí?
Tvé hodnocení kurzuZnaků 0 z 50-500
Aktivity
Avatar
Tomáš Hanzelka:2.11.2018 13:13

Snažím se pochopit struktury a není mi moc jasné jaký je rozdíl v tom když určitou strukturu inicializuji pomocí konstruktoru nebo klasicky jak je uvedeno v příloze. Opravte mě, jestli to chápu úplně špatně.
Prosím o vysvětlení po lopatě. :)

Zkusil jsem: Číst prezentaci ze školy minimálně 10x :D

Chci docílit: Pochopit základ struktur.

 
Odpovědět
2.11.2018 13:13
Avatar
Odpovídá na Tomáš Hanzelka
Petr Štechmüller:2.11.2018 13:32

Ahoj, hlavní rozdíl je v jaké paměti tu proměnnou inicializuješ. Pomocí new vytvoříš proměnnou na haldě, zatím co ten druhý příklad ji vytvoří na stacku. Dále je rozdíl v mazání přidělené paměti. Když vytvoříš instancí struktury na haldě, tak ji musíš opět příkazem delete smazat, jinak budou vznikat memory leaky. Proměnná inicializována na stacku se "automaticky" smaže na konci scope, ve kterém byla vytvořena.

Nahoru Odpovědět
-1
2.11.2018 13:32
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Odpovídá na Petr Štechmüller
Erik Šťastný:2.11.2018 13:46

Řeč je o .NET a ne o C++, žádné delete řešit nemusíš.

Ještě bych dodal, že z hlediska funkce v tomto případě není rozdíl.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
+1
2.11.2018 13:46
Avatar
Odpovídá na Erik Šťastný
Petr Štechmüller:2.11.2018 13:46

UPS, to jsem přehlédl

Nahoru Odpovědět
2.11.2018 13:46
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Tomáš Hanzelka:2.11.2018 16:39

Děkuji za odpovědi. Na haldě rozumíme jako na RAM a na stacku asi jako zásobníku? Jaká paměť je teda zásobník?

 
Nahoru Odpovědět
2.11.2018 16:39
Avatar
Odpovídá na Tomáš Hanzelka
Patrik Valkovič:2.11.2018 17:37

To jsou věci v C++, to v C# řešit nemusíš. Ony jsou obě paměti v RAM, jen se s nimi zachází rozdílně. Jinak rozdíl mezi inicializací konstruktoru bez parametrů a klasickou inicializací žádný rozdíl není.

Nahoru Odpovědět
+1
2.11.2018 17:37
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
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 6 zpráv z 6.