Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem C# - uložení struktrury v paměti

Přečetl jsem si už spoustu článků, knih atd. Musím říct, že každý autor má jinou terminologii při rozlišení typů v jazyku C#. Jedni dělí typy na hodnotové a referenční podle toho zda jsou uloženy v zásobníku a haldě. Druzí je dělí na primitivní, objektové, referenční a všechno se motá dohromady. Jedno vím jistě, že vše je v C# objekt. Tzn., že když vytvořím novou proměnnou s klíčovým slovem struct, jedná se vlastně o "odkaz" na objekt, přičemž ten objekt není uložený v haldě, ale v zásobníku spolu i s tím odkazem. Je to tak opravdu uspořádáno v paměti?

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Struktury jsou v zásobníku, ostatní v haldě.
Wikan 04.12.2011 12:26
Wikan
To vim... jde mi o tu promennou, ktera ukazuje na objekt typu struktura. Mam Struct s = new Struct()…
Jirka800 04.12.2011 12:30
Jirka800
premenna s nepredstavuje nic len jedno pismeno ktore prekladacu povie ze co od neho zrovna chces. Ak… nový
MM.. 04.12.2011 12:34
MM..
... resp. v C# je to trochu zlozitejsie (to s tym ak new tak halda sa da aplikovat na C++), pre C# s… nový
MM.. 04.12.2011 12:39
MM..
... tak nakoniec to s tym new plati aj pre C# (nebol som si isty nerobim profesionalne v C#) ale je… nový
MM.. 04.12.2011 12:47
MM..
Pokud použije new na struct, tak je to pořád ve stacku. nový
Wikan 04.12.2011 12:51
Wikan
Ok mas pravdu (MSDN is the best :) http://msdn.microsoft.com/en-us/library/aa288471%2 8v=vs.71%29.as… nový
MM.. 04.12.2011 13:13
MM..
resp. neni to jedno pri predavani parametra, struktura sa predava hodnotou a nie pointrom, grr, iba… poslední
MM.. 04.12.2011 13:19
MM..
Struktura je hodnotový typ, takže tam žádná reference není. V proměnné jsou přímo uložené hodnoty. nový
Wikan 04.12.2011 12:37
Wikan

... resp. v C# je to trochu zlozitejsie (to s tym ak new tak halda sa da aplikovat na C++), pre C# si kukni napr. http://www.c-sharpcorner.com/UploadFile/rmcochran/ csharp_memory01122006130034PM/csharp_memory.aspx?A rticleID=9adb0e3c-b3f6-40b5-98b5-413b6d348b91

Here are our two golden rules:

A Reference Type always goes on the Heap - easy enough, right?

Value Types and Pointers always go where they were declared. This is a little more complex and needs a bit more understanding of how the Stack works to figure out where "things" are declared.

idealne precitat si to cele ak tomu chces aj rozumiet.

Zpět do poradny Odpovědět na původní otázku Nahoru