به طور کلی حافظهی کامپیوتر به دو قسمت پشته (stack
) و توده؟! (heap
) تقسیم میشه. قسمت پشته اون قسمتی هست که کد فایل اجرایی از هارد داخل اون کپی میشه. قسمت توده هم قسمتی هست که توسط کد فایل برنامهها اشغال نشده و آزاد هست.
متغیرها به دو دسته تقسیم میشن.
متغیرهای ایستا یا استاتیک که داخل فایل برنامه (فایل exe
ساخته شده) تعریف میشن و موقع کپی شدن فایل برنامه از هارد به حافظه جاشون در فایل ثابته.
متغیرهای پویا یا داینامیک که فضای مورد نیازشون رو از سیستمعامل دریافت میکنن و سیستمعامل هم حافظهای از قسمت توده رو در اختیارشون قرار میده.
متغیرهای داخل تابع main
در صورتی که پویا باشن از حافظهی heap
استفاده میکنن که از قبل معلوم نیست دقیقاً چه آدرسی دارن و با اجرای برنامه سیستمعامل خودش یه آدرس بهشون میده.
در صورتی که متغیرهای main
ایستا باشن یه قسمت در فایل اجرایی تولید شده بهش تخصیص داده میشه که همراه با کپی فایل اجرایی به حافظه، محل ذخیرهسازی اون متغیر هم معلوم میشه.
هیچ پژوهش انسانی نمیتواند ادعای علمی بودن داشته باشد، مگر اینکه از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)