PDA

View Full Version : سوال: ترتیب قرار گرفتن آدرس متغیرها در حافظه



***BiDaK***
چهارشنبه 18 مرداد 1391, 14:19 عصر
سلام.من چنتا متغیر اینجوری معرفی کردم :
double b;
int x,y;
حالا باید y از لحاظ گرفتن آدرس اول از همه توو خونه حافظه قرار بگیره دیگه.
الان توو کامپایلر من:
&y=0x0042fb80
&x=0x0042fb8c
&b=0x0042fb92

حالا چرا متغیر x و y فاصلشون از هم 4 بایت نیست؟ چرا توو حافظه 12 بایت بینشون خالی میمونه؟؟؟
بعد چرا متغیر x با متغیر b فاصلش 4 بایت نیست؟؟(چون متغیر x هم 4بایته دیگه)
مگه خونه های حافظه پشت سرهم نمیان؟؟این فضاها چرا بینشون خالی میمونه؟
ممنوون.

tdkhakpur
چهارشنبه 18 مرداد 1391, 15:32 عصر
حالا چرا متغیر x و y فاصلشون از هم 4 بایت نیست؟ چرا توو حافظه 12 بایت بینشون خالی میمونه؟؟؟
وقتی حافظه رزرو میسشه این تقاضا از طریق سیستم عامل انجام میشه و اولین فضای خالی توی دسترس به متغییر داده میشه.
ولی در مورد اینکه چرا فاصله ها آنطور نیست که شما میگید این برمیگرده به خالی بودن حافظه برای رزرو هست این فاصله فقط برای آرایه ترتیب ثابت داره.
در مورد نحوه رزرو حافظه به تعاریف موجود در MCB (Memory Control Block )نگاه کن.
این سیستم بیان میکند که حافظه برا اساس انداره متغییر رزرو میشه یعنی هر متغییر هر اندازه ای که باشه فقط به اندازه اون مقدار میتونه پشت سر هم باشه و برای متغییرهای جدا این اصول تضمین شده نیست.

بعد چرا متغیر x با متغیر b فاصلش 4 بایت نیست؟؟(چون متغیر x هم 4بایته دیگه)
باز همون جواب بالاست

مگه خونه های حافظه پشت سرهم نمیان؟؟این فضاها چرا بینشون خالی میمونه؟
حافظه داخل RAM همیشه ترتیب ثابت داره اما رزرو اون برای متغییرهای تنها ثابت نیست.