কম্পিউটার

কিভাবে malloc() এবং free() C/C++ এ কাজ করে?


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

  1. কিভাবে ব্যতিক্রমগুলি C++ এ কাজ করে

  2. কিভাবে একটি ভেক্টর C++ এ কাজ করে?

  3. সদস্য ফাংশনে স্ট্যাটিক ভেরিয়েবল কিভাবে C++ এ কাজ করে?

  4. কিভাবে C++ এ কম্বিনেশন এবং পারমুটেশন গণনা করা যায়?