malloc()
malloc() ফাংশনটি অনুরোধ করা বাইট সাইজ aloket করে এবং aloket করা মেমরির প্রথম বাইটের পয়েন্টার রিটার্ন করে। ব্যর্থ হলে এটি নাল পয়েন্টার রিটার্ন করে।
C ভাষায় malloc()-এর সিনট্যাক্স:
pointer_name = (cast-type*) malloc(size);
এখানে,
pointer_name — পয়েন্টারকে দেওয়া যেকোনো নাম।
cast-type — যে ডেটা টাইপে malloc() দ্বারা aloket করা মেমরি কাস্ট করতে চান।
size — aloket করা মেমরির সাইজ বাইটে।
C ভাষায় malloc() উদাহরণ:
উদাহরণ
#include <stdio.h>
#include <stdlib.h>
int main() {
int n = 4, i, *p, s = 0;
p = (int*) malloc(n * sizeof(int));
if (p == NULL) {
printf("\nError! memory not allocated.");
exit(0);
}
printf("\nEnter elements of array: ");
for (i = 0; i < n; ++i) {
scanf("%d", p + i);
s += *(p + i);
}
printf("\nSum: %d", s);
return 0;
}
আউটপুট
Enter elements of array: 32 23 21 8 Sum: 84
free()
free() ফাংশনটি malloc() দ্বারা aloket করা মেমরি ডি-অ্যালোকেট করতে ব্যবহৃত হয়। এটি পয়েন্টারের মান পরিবর্তন করে না অর্থাৎ এটি এখনও একই মেমরি লোকেশনকে পয়েন্ট করে।
C ভাষায় free()-এর সিনট্যাক্স:
void free(void *pointer_name);
এখানে,
pointer_name — পয়েন্টারকে দেওয়া যেকোনো নাম।
C ভাষায় free() উদাহরণ:
উদাহরণ
#include <stdio.h>
#include <stdlib.h>
int main() {
int n = 4, i, *p, s = 0;
p = (int*) malloc(n * sizeof(int));
if (p == NULL) {
printf("\nError! memory not allocated.");
exit(0);
}
printf("\nEnter elements of array: ");
for (i = 0; i < n; ++i) {
scanf("%d", p + i);
s += *(p + i);
}
printf("\nSum: %d", s);
free(p);
return 0;
}
আউটপুট
Enter elements of array: 32 23 21 28 Sum: 104