Java týden Java týden
Aprílový black friday tě nenechá v klidu! Až 80 % prémiového obsahu zdarma. Více informací
Pouze tento týden slevy až 80 % na programování v Javě

Diskuze: Pochopení struktur

C# .NET .NET (C# a Visual Basic) Pochopení struktur American English version English version

Aktivity (3)
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
Petr Štechmüller
Překladatel
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í
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 2.11.2018 13:46
Avatar
Petr Štechmüller
Překladatel
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
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Tomáš Hanzelka
patrik.valkovic: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.