درک اینکه چگونه داده ها در حافظه ذخیره می شوند برای برنامه نویسی کارآمد در C و ++C ضروری است.ساختارها و اتحادیه ها انواع داده های بنیادی هستند که بر چیدمان حافظه و اندازه تاثیر می گذارند.این مقاله توضیح می دهد که چگونه حافظه برای این نوع داده ها اختصاص داده شده و چگونه اندازه آنها را به درستی محاسبه کنیم.

حافظه ساختارهای

ساختار در C و ++C مجموعه ای از متغیرهای هستند، احتمالاً از انواع مختلف، که تحت یک نام واحد جمع شده اند، کامپایلر حافظه را برای یک ساختار با قرار دادن هر عضو به طور متوالی، با padding ممکن برای پاسخگویی به نیازهای تراز بندی اختصاص می دهد.

اندازه کل یک ساختار، مجموع اندازه اعضای آن به علاوه هر گونه padding اضافه شده برای ترازدهی است. Padding تضمین می کند که هر عضو با اندازه یا نیازهای تراز آن، در یک آدرس قابل مشاهده شروع می کند.

فهرست های حافظه اتحادیه ها

اتحادیه ها شبیه به ساختارها هستند اما در تخصیص حافظه متفاوت هستند، تمام اعضای یک اتحادیه فضای حافظه یکسانی دارند که برابر با اندازه بزرگترین عضو آن است.این اجازه می دهد تا چندین نوع داده برای اشغال همان مکان حافظه.

اندازه یک اتحادیه توسط بزرگترین عضو آن، به علاوه امکان ترکیب برای تراز بندی تعیین می شود.نوشتن به یک عضو بر داده های دیگر اعضا تأثیر می گذارد، بنابراین اتحادیه ها برای به اشتراک گذاری داده های کارآمد حافظه استفاده می شوند.

محاسبه حجم داده ها

محاسبه اندازه ساختارها و اتحادیه ها شامل جمع آوری اندازه اعضای فردی و در نظر گرفتن padding برای تراز کردن است. sizeof اپراتور در C و C ++ اندازه کل بایت ها را فراهم می کند.

به عنوان مثال، ساختار را با یک ساختار (FLT:0) و یک در نظر بگیرید، اندازه ساختار به اندازه (FLT:2)، اندازه (FLT:3) و padding اضافه شده برای هم تراز، به طور مشابه، اندازه یک اتحادیه است اندازه بزرگترین عضو آن.

  • استفاده از |S|S|S|S|S|S|S|1| برای تعیین اندازه کل (در این زمینه)
  • الزامات هماهنگی برای هر عضو را در نظر بگیرید.
  • حساب برای padding اضافه شده توسط کامپایلر
  • به یاد داشته باشید که اتحادیه ها در میان همه اعضای خود حافظه به اشتراک می گذارند.