cpp-02-06 - حافظه (رم) رو نشونم بده

بازدید : 43

2

اشتراک

cpp-02-06 - حافظه (رم) رو نشونم بده

توضیحات :

در برنامه‌نویسی، هر متغیر علاوه‌بر مقدار و نوع داده، یک آدرس مشخص در حافظه (RAM) هم دارد. کامپیوتر برای دسترسی، خواندن و نوشتن داده‌ها باید بداند این اطلاعات کجا ذخیره شده‌اند.

رم از تعداد زیادی خانه‌ی پشت سر هم تشکیل شده و هر خانه یک آدرس دارد. وقتی یک متغیر ایجاد می‌کنید، مثلاً:

int a = 45;

کامپیوتر برای آن ۴ بایت در حافظه رزرو می‌کند (چون نوع int چهار بایت است). این ۴ بایت ممکن است مثلاً در آدرس‌های:

100 ،101 ،102 ،103

ذخیره شوند. این محدوده همان آدرس متغیر a است.


چرا آدرس حافظه مبنای ۱۶ (Hexadecimal) نمایش داده می‌شود؟

آدرس‌های واقعی حافظه بسیار بزرگ‌اند. به همین دلیل سیستم‌ها برای خوانایی بهتر آن‌ها را در مبنای ۱۶ (Hex) نمایش می‌دهند.
مثلاً:

0x00AFFC10

این فقط روش نمایش است؛ خود آدرس همان موقعیت واقعی در رم است.


مشاهدهٔ آدرس متغیر در Visual Studio

به‌کمک Debugger می‌توانی واقعاً ببینی متغیرت در کدام خانهٔ RAM قرار گرفته:

  1. یک Breakpoint بعد از تعریف متغیر بگذار.

  2. برنامه را با Debug (کلید F5) اجرا کن.

  3. از منوی Debug بخش Memory → Memory 1 را باز کن.

  4. در بخش آدرس، بنویس:

&a

این‌جا حافظه واقعی سیستم را می‌بینی و ۴ بایتی که به متغیر a اختصاص یافته‌اند نمایش داده می‌شود. مقدار داخل این خانه‌ها نیز در قالب Hex نشان داده می‌شود.


نمایش اندازهٔ واقعی متغیرها در کد

با تابع sizeof می‌توانی اندازهٔ هر نوع داده را مشاهده کنی:

int a = 45; char c = 'D'; cout << sizeof(a); // خروجی: 4 بایت cout << sizeof(c); // خروجی: 1 بایت

این دقیقاً همان مقداری است که سیستم هنگام اجرای برنامه برای ذخیرهٔ این متغیرها در حافظه رزرو می‌کند.


چرا دانستن ساختار حافظه مهم است؟

برنامه‌نویس حرفه‌ای باید بفهمد:

  • داده در حافظه چگونه ذخیره می‌شود

  • چرا انواع مختلف داده اندازهٔ متفاوت دارند

  • چرا کامپیوتر آدرس متغیر را لازم دارد

  • و اینکه Debugger چطور رفتار برنامه را نشان می‌دهد

این مفاهیم پایهٔ مدیریت حافظه، درک رفتار کامپایلر و فهم دقیق‌تر معماری نرم‌افزار هستند.

لطفا برای گذاشتن نظرات خود وارد شوید

نظرات شما عزیزان