কম্পিউটার টিউটোরিয়াল

কিভাবে 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++ এ কম্বিনেশন এবং পারমুটেশন গণনা করা যায়?