درود و سلام،
امروز مطلبی دیدم که میگه Struct در حافظه Heap هم می تواند ذخیره شود!
![]()
درود و سلام،
امروز مطلبی دیدم که میگه Struct در حافظه Heap هم می تواند ذخیره شود!
![]()
مظنورش از inline چیه؟؟؟؟ من توابع inline می شناسم که کامپایلر برای بهینه سازی موقع تبدیل کردن کد ها به IL ، برخی ها که کوچک هستند و شرایط مناسب دارند رو دقیقا خود تابع رو جایگزین میکنه به جای فراخوانی
اما استراکچر چطور هست؟ خوب ما 2 نوع ذخیره سازی داریم. یا میریزیم تو Heap مثل رفرنس تایپ ها یا value type ها مثل int
اما inline رو تازه دیدم!!!!
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
Last edited by iranch; 22-07-2015 at 23:49.
سلام
خیلی واضح است، struct در حافظه پشته ذخیره شده و class ها در هیپ ... قبول که دارید؟!
int یک struct است و در پشته ذخیره میشود ولی
{;class Class1 {int x یک کلاس است و در هیپ ذخیره میشود، متن هم همین را میگوید! خیلی واضح است!
struct هایی که جزئی از یک کلاس میشوند، دیگر کلاس هستند.
خیلی سخت نگاه و ترجمه نکنید، نکته ابهامی ندارد.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
==============
برای تکمیل بحث لازم به ذکر است که یک عمل Boxing و Unboxing هم در دات نت داریم که وقتی رخ میدهد که struct ای را در نوع System.Object ذخیره کنید:
عمل دات نت در این موقع شبیه ذخیره در یک کلاس تک فیلدی است.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و... ...
درنهایت به آنجا میرسیم که در این حالت هم struct به heap منتقل میشود.
این لینک را هم ببینید:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
==============
باید کلمات را در جمله معنی کرد، باید با ذهنیت بازتری ترجمه کرد...مظنورش از inline چیه؟؟؟؟ من توابع inline می شناسم ...
من حدس میزنم منظور متن از ذخیره inline در اینجا، به احتمال زیاد ذخیره در ثبات های اصلی و داخلی CPU است مانند EAX, EBX, ECX, EDX و...
در موارد خاص این مورد هم جهت بهینه سازی استفاده میشود تا نیاز به read مدام RAM برای متغییری پراستفاده نباشد.
موفق باشید.
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] می تواند برای شما مفید باشد.
موفق باشید.
سلام،
البته Structure ها از System.ValueType ارث بری میکنند، و همین System.ValueType به طور غیرمستقیم از System.Object ارث بری میکند.
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)