কম্পিউটার

C/ C++ এ new/delete এবং malloc/ free এর মধ্যে পার্থক্য কি?


নতুন/ মুছুন

নতুন অপারেটর হিপে মেমরি বরাদ্দের জন্য অনুরোধ করে। পর্যাপ্ত মেমরি পাওয়া গেলে, এটি পয়েন্টার ভেরিয়েবলে মেমরি চালু করে এবং তার ঠিকানা ফেরত দেয়।

ডিলিট অপারেটর মেমরি ডিলোকেট করতে ব্যবহৃত হয়। ব্যবহারকারীর এই ডিলিট অপারেটর দ্বারা তৈরি পয়েন্টার ভেরিয়েবল ডিলোকেট করার বিশেষাধিকার রয়েছে৷

এখানে C++ ভাষাতে নতুন/মুছে ফেলা অপারেটরের একটি উদাহরণ রয়েছে,

উদাহরণ

#include <iostream>
using namespace std;

int main () {
   int *ptr1 = NULL;
   ptr1 = new int;
   float *ptr2 = new float(299.121);
   int *ptr3 = new int[28];

   *ptr1 = 28;

   cout << "Value of pointer variable 1 : " << *ptr1 << endl;
   cout << "Value of pointer variable 2 : " << *ptr2 << endl;
   
   if (!ptr3)
   cout << "Allocation of memory failed\n";
   else {
      for (int i = 10; i < 15; i++)
      ptr3[i] = i+1;

      cout << "Value of store in block of memory: ";
      for (int i = 10; i < 15; i++)
      cout << ptr3[i] << " ";
   }
   delete ptr1;
   delete ptr2;
   delete[] ptr3;

   return 0;
}

আউটপুট

এখানে আউটপুট

Value of pointer variable 1 : 28
Value of pointer variable 2 : 299.121
Value of store in block of memory: 11 12 13 14 15

malloc/ বিনামূল্যে

ফাংশন malloc() বাইটের অনুরোধকৃত আকার বরাদ্দ করতে ব্যবহৃত হয় এবং এটি বরাদ্দকৃত মেমরির প্রথম বাইটে একটি পয়েন্টার প্রদান করে। ব্যর্থ হলে এটি নাল পয়েন্টার প্রদান করে।

ফাংশন free() malloc() দ্বারা বরাদ্দ করা মেমরি ডিলকেট করতে ব্যবহৃত হয়। এটি পয়েন্টারের মান পরিবর্তন করে না যার মানে এটি এখনও একই মেমরি অবস্থান নির্দেশ করে।

এখানে C ভাষায় malloc/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 8
Sum : 84

  1. সি ++ এ সের এবং কাউট স্ট্রিমের মধ্যে পার্থক্য কী?

  2. সি ++ এ সের এবং ক্লগ স্ট্রিমের মধ্যে পার্থক্য কী?

  3. C++ এ ডট (.) অপারেটর এবং -> এর মধ্যে পার্থক্য কী?

  4. C++ এ #define এবং const কীওয়ার্ডের মধ্যে পার্থক্য কী?