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?
Struktury jsou v zásobníku, ostatní v haldě.
To vim... jde mi o tu promennou, ktera ukazuje na objekt typu struktura. Mam Struct s = new Struct()... jde mi o, jestli promenna "s" predstavuje adresu (odkaz) na objekt, ktery je ulozen v zasobniku.
premenna s nepredstavuje nic len jedno pismeno ktore prekladacu povie ze co od neho zrovna chces.
Ak pouzivas new, tak sa to alokuje dynamicky od OS, t.j. z tej tvojej "haldy"
... 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
idealne precitat si to cele ak tomu chces aj rozumiet.
... tak nakoniec to s tym new plati aj pre C# (nebol som si isty nerobim profesionalne v C#) ale je to logicke, ak pouzijes new, tak to ide z haldy t.j. s je pointer. Ak nepouzijes new a je to hodnotovy typ, tak to je v stacku.
Pokud použije new na struct, tak je to pořád ve stacku.
Ok mas pravdu (MSDN is the best :)
http://msdn.microsoft.com/en-us/library/aa288471%2 8v=vs.71%29.aspx
v C# to zoptimalizovali. V principe je to ale programatorovi jedno.
resp. neni to jedno pri predavani parametra, struktura sa predava hodnotou a nie pointrom, grr, iba som ho uplne zblbol, OK uz radsej k C# nic nepisem, je to riadny maglajz, zlate C++ :)
Struktura je hodnotový typ, takže tam žádná reference není. V proměnné jsou přímo uložené hodnoty.