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

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

متغیرهای تعریف شده در تابع main

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

متغیرهایی که در تابع main تعریف می‌کنیم زمانی که برنامه کامپایل شد کجا قرار می‌گیرن؟

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

1 پاسخ

0 امتیاز

به طور کلی حافظه‌ی کامپیوتر به دو قسمت پشته (stack) و توده؟! (heap) تقسیم می‌شه. قسمت پشته اون قسمتی هست که کد فایل اجرایی از هارد داخل اون کپی می‌شه. قسمت توده هم قسمتی هست که توسط کد فایل برنامه‌ها اشغال نشده و آزاد هست.

متغیرها به دو دسته تقسیم می‌شن.

متغیرهای ایستا یا استاتیک که داخل فایل برنامه (فایل exe ساخته شده) تعریف می‌شن و موقع کپی شدن فایل برنامه از هارد به حافظه جاشون در فایل ثابته.

متغیرهای پویا یا داینامیک که فضای مورد نیازشون رو از سیستم‌عامل دریافت می‌کنن و سیستم‌عامل هم حافظه‌ای از قسمت توده رو در اختیارشون قرار می‌ده.

متغیرهای داخل تابع main در صورتی که پویا باشن از حافظه‌ی heap استفاده می‌کنن که از قبل معلوم نیست دقیقاً چه آدرسی دارن و با اجرای برنامه سیستم‌عامل خودش یه آدرس بهشون می‌ده.

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

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