মেমরি নিম্নলিখিত দুটি পদ্ধতিতে অ্যালোকেট করা যায়—

স্ট্যাটিক মেমরি অ্যালোকেশন (Static Memory Allocation)
স্ট্যাটিক ভেরিয়েবল একটি ফিক্সড সাইজের অ্যালোকেটেড স্পেসের একটি ব্লকে ডিফাইন করা হয়। একবার অ্যালোকেট হলে তা কখনো ফ্রি করা যায় না।
প্রোগ্রামে ডিক্লেয়ার করা ভেরিয়েবলের জন্য মেমরি অ্যালোকেট হয়।
- অ্যাড্রেস '&' অপারেটর দিয়ে পাওয়া যায় এবং পয়েন্টারে অ্যাসাইন করা যায়।
- মেমরি কম্পাইল টাইমে অ্যালোকেট হয়।
- স্ট্যাটিক অ্যালোকেশন মেইনটেইন করতে স্ট্যাক ব্যবহার হয়।
- এই অ্যালোকেশনে, একবার মেমরি অ্যালোকেট হলে সাইজ পরিবর্তন করা যায় না।
- এটি কম কার্যকর।
প্রোগ্রাম রান করার আগে যদি ভেরিয়েবলের ফাইনাল সাইজ নির্ধারিত থাকে, তবে তাকে স্ট্যাটিক মেমরি অ্যালোকেশন বলা হয়। এটিকে কম্পাইল-টাইম মেমরি অ্যালোকেশনও বলা হয়।
কম্পাইল-টাইমে অ্যালোকেট করা ভেরিয়েবলের সাইজ পরিবর্তন করা যায় না।
উদাহরণ ১
স্ট্যাটিক মেমরি অ্যালোকেশন সাধারণত অ্যারে জন্য ব্যবহৃত হয়। অ্যারে নিয়ে একটি উদাহরণ প্রোগ্রাম—
#include<stdio.h>
main() {
int a[5] = {10, 20, 30, 40, 50};
int i;
printf("Elements of the array are");
for (i = 0; i < 5; i++)
printf("%d", a[i]);
}
আউটপুট
Elements of the array are 1020304050
উদাহরণ ২
অ্যারেতে সকল এলিমেন্টের যোগফল ও গুণফল বের করার আরেকটি উদাহরণ—
#include<stdio.h>
void main() {
// Declaring the array - run time//
int array[5] = {10, 20, 30, 40, 50};
int i, sum = 0, product = 1;
// Reading elements into the array//
// For loop//
for (i = 0; i < 5; i++) {
// Calculating sum and product, printing output//
sum = sum + array[i];
product = product * array[i];
}
// Displaying sum and product//
printf("Sum of elements in the array is : %d\n", sum);
printf("Product of elements in the array is : %d\n", product);
}
আউটপুট
Sum of elements in the array is : 150 Product of elements in the array is : 12000000