malloc()
৷malloc() ফাংশনটি বাইটের অনুরোধকৃত আকার বরাদ্দ করতে ব্যবহৃত হয় এবং এটি বরাদ্দকৃত মেমরির প্রথম বাইটে একটি পয়েন্টার প্রদান করে। এটি ব্যর্থ হলে এটি নাল পয়েন্টার প্রদান করে।
এখানে C ভাষায় malloc() এর সিনট্যাক্স আছে,
pointer_name = (cast-type*) malloc(size);
এখানে,
-
পয়েন্টার_নাম − পয়েন্টারকে দেওয়া যেকোনো নাম।
-
কাস্ট-টাইপ − যে ডেটাটাইপটিতে আপনি malloc().
দ্বারা বরাদ্দ করা মেমরি কাস্ট করতে চান -
আকার − বাইটে বরাদ্দ করা মেমরির আকার।
এখানে 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() malloc() দ্বারা বরাদ্দ করা মেমরি ডিললোকেট করতে ব্যবহৃত হয়। এটি পয়েন্টারের মান পরিবর্তন করে না যার মানে এটি এখনও একই মেমরি অবস্থানে নির্দেশ করে।
এখানে C ভাষায় free() এর সিনট্যাক্স রয়েছে,
void free(void *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