داستان اسم Stackoverflow

اگر توسعه دهنده یا حدقل IT Guy باشید قطعا با سایت Stackoverflow آشنا هستید. تا قبل از همه گیری چت بات ها یه جورایی بزرگترین اجتماع حل مشکلات برنامه نویسی و پرسش و پاسخ بود (البته الانم هست ولی نه مثل قبل).

اما تا حالا به اسمش فکر کردید؟ این که اسمش از کجا اومده و چه معنی میده؟ برای جواب به این سوال باید بریم تو دل مموری!

هر برنامه برای اجرا شدن نیاز به رزرو مقداری از مموری (حافظه اصلی یا RAM) داره که این مقدار رزرو شده به ۴ بخش تقسیم میشه.
- Heap
- Stack
- Static/Global
- Code (Text)
بخش Code دستورات برنامه یا همون کد نوشته شده (کدی که ما نوشتیم نه کدی که کامپایل شده) قرار میگیره. تو بخش Global/Static متغیر ها و مقادیری که توی اسکوپ گلوبال نوشته شده و باید همه جای برنامه در دسترس باشن قرار میگیره.
و اما Stack! این بخش برای ذخیره سازی متغیر ها و مقادیر لوکال مربوط به فانکشن ها(توابع) هستش.هیپ هم فضایی هستش که برنامه نویس میتونه به صورت دستی رزرو کنه.
وقتی برنامه اجرا میشه استک توسط سیستم عامل به طور خودکار رزرو میشه و یه حجمی بهش اختصاص داده میشه(تو این مثال ما ۱ مگابایت رو فرض میگیریم) ملاک تعیین حجم استک هم شاید توی یه پست دیگه توضیح دادم :)

وقتی یه فانکشن کال میشه توی استک یه فضا برای اون فانکشن که کال شده ساخته میشه تا ورودی ها,متغیر های لوکال و... اون تابع توش دخیره بشه. به این فضا میگن Stakc Frame. استک فریم ها بعد از به اتمام رسیدن دستورات تابع به طور خودکار حذف میشن و فضایی که اشغال کردن رو آزاد میکنن.

همونطور هم که گفتم فضای Stack نامحدود نیست.حالا اگر فانکشن ها تو در تو باشن(Nested) و همدیگه رو کال کنن استک فریم ها حذف نمیشن چون دستورات توابع تموم نشده. و بلاخره استک یه جایی پر میشه و اصطلاحا سر ریز میکنه (Overflow) و یکی از خطا های معروف برنامه نویسی رخ میده به نام Stackoverflow و در نهایت برنامه متوقف میشه!

شاید با خودت بگی این همه نوشتی که همینو بگی؟ بله :)


نظرات

mrrobot ۱۴۰۵/۰۲/۱۴

خیلی جالب بود 👌👌

پاسخ:

❤️


sed۲۰۸۸ ۱۴۰۵/۰۲/۱۴

وای، عجب تحلیل قوی ای. این سایت رو میشناسم ولی خیلی باهاش کار نکردم تا حالا

پاسخ:

نمیشه بهش گفت تحلیل ولی ممنون. و اینکه آره سایتش خیلی خاصه و پالیسی های خودشو داره مثلا هر کسی نمیتونه توش سوال بپرسه و هر کسیم نمیتونه به سوالا جواب بده که مبادا اشتباهی نشه.


برای ارسال نظر باید وارد شوید.