স্ট্যাক, হিপ এবং গ্লোবাল মেমরি
প্রোগ্রাম এক্সিকিউশনের সময় ভেরিয়েবল সংরক্ষণের জন্য স্ট্যাক (Stack) এবং হিপ (Heap) ব্যবহার করা হয়। তবে গ্লোবাল ভেরিয়েবল বা ডেটা স্ট্রাকচার স্ট্যাক বা হিপে সংরক্ষিত হয় না। এগুলো একটি ফিক্সড মেমরি ব্লক (fixed memory block)-এ অ্যালোকেটেড থাকে যা প্রোগ্রামের সমস্ত লাইফটাইম boyunca অপরিবর্তিত থাকে।
উদাহরণ
int a[10]; // ফিক্সড মেমরি ব্লকে অবস্থিত (গ্লোবাল/স্ট্যাটিক স্টোরেজ)
int main() {
float *ptr = (float*)malloc(sizeof(float) * 10); // হিপ থেকে ডাইনামিক্যালি অ্যালোকেটেড
// ...
free(ptr);
}
সারসংক্ষেপ:
- স্ট্যাক: লোকাল ভেরিয়েবল, ফাংশন প্যারামিটার, রিটার্ন অ্যাড্রেস। আকার সীমিত, দ্রুত অ্যাক্সেস।
- হিপ: ডাইনামিক মেমরি অ্যালোকেশন (
new,malloc)। আকার বড়, ম্যানুয়াল ম্যানেজমেন্ট। - গ্লোবাল/স্ট্যাটিক স্টোরেজ: গ্লোবাল ভেরিয়েবল, স্ট্যাটিক ভেরিয়েবল। প্রোগ্রাম শুরু থেকে শেষ পর্যন্ত বিদ্যমান।