اولین بار است که به این وب‌سایت می‌آیید. راهنما را مطالعه کنید!
x
موسسه خیریه محک

شهر ریاضی بازی-ریاضی

چرا سایز یک ساختار با سایز اعضای اون ساختار برابر نیست؟

+1 امتیاز
420 نمایش

چرا عملگر sizeof() برای یک ساختار، اندازه بیشتری رو نسبت به مجموع اندازه‌های اعضاش برمیگردونه؟

پرسیده شده چهارشنبه ۱۴ فروردین ۱۳۹۲ در C++ توسط CPP_Crawler4  

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

پاسخ در aligning خلاصه می‌شه. موضوع از این قراره که برای یک کامپیوتر ۳۲ بیتی بهتره که آدرس‌های بایت‌هایی رو مورد استفاده قرار بده که ضریبی از ۴ (یعنی همون ۳۲ بیت) هستند.
برای همین موقعی که شما در یک برنامه دو تا متغیر ۱۶ بیتی پشت سرهم تعریف کنین آدرس‌شون با هم ۲ تا فرق نداره بلکه ۴ تا فرق داره!
برای همین وقتی یک ساختار متشکل از چند تا متغیر رو در نظر می‌گیریم، چند بایت الکی اضافه به ساختار اضافه می‌شه تا همه‌ی متغیرهاش در فواصل ۴ بایت از هم قرار بگیرند.

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پاسخ داده شده چهارشنبه ۱۴ فروردین ۱۳۹۲ توسط prodo  
انتخاب شده پنجشنبه ۲۳ خرداد ۱۳۹۲ توسط admin

ینی چی آدرسشون با هم 2 تا فرق نداره 4 تا فرق داره؟ نفهمیدم.

در حالت عادی انتظار داریم وقتی یه متغیر دو بایتی در کامپیوتر ۳۲ بیتی، در آدرس ۱۰۰ قرار می‌گیره متغیر بعدی در آدرس ۱۰۲ قرار بگیره ولی با aligning متغیر بعدی در آدرس ۱۰۴ قرار می‌گیره.