حافظه
برنامههای راست ۳ ناحیهی حافظه دارن که داده توشون ذخیره میشه:
- حافظهی داده (data memory) - برای دادههایی با اندازهی ثابت که static هستن (یعنی همیشه در طول عمر برنامه در دسترسن). متن توی برنامهت رو در نظر بگیر (مثلاً "Hello World!"): بایتهای این متن فقط از یه جا خونده میشن، پس میشه توی این ناحیه ذخیرهشون کرد. کامپایلرها با این نوع داده بهینهسازیهای زیادی انجام میدن و معمولاً استفاده ازشون خیلی سریع در نظر گرفته میشه، چون مکانشون مشخص و ثابته.
- حافظهی پشته (stack memory) - برای دادههایی که بهعنوان متغیر داخل یه تابع تعریف میشن. مکان این حافظه در طول یه فراخوانی تابع هیچوقت عوض نمیشه؛ به همین خاطر کامپایلرها میتونن کد رو طوری بهینه کنن که دسترسی به دادههای پشته خیلی سریع باشه.
- حافظهی هیپ (heap memory) - برای دادههایی که وقتی برنامه داره اجرا میشه ساخته میشن. دادههای این ناحیه ممکنه اضافه، جابهجا، حذف، یا تغییر اندازه داده بشن و غیره. به خاطر ماهیت پویاش، معمولاً استفاده ازش کندتر در نظر گرفته میشه، ولی استفادههای خلاقانهتری از حافظه رو ممکن میکنه. وقتی دادهای به این ناحیه اضافه بشه، بهش میگیم تخصیص (allocation). وقتی دادهای از این ناحیه حذف بشه، بهش میگیم آزادسازی (deallocation).