কম্পিউটার

C++ এ ডিলিট() এবং ফ্রি()


মুছুন()

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

এখানে C++ ভাষায় ডিলিট অপারেটরের সিনট্যাক্স রয়েছে,

delete pointer_variable;

এখানে বরাদ্দ করা মেমরির ব্লক মুছে ফেলার সিনট্যাক্স রয়েছে,

delete[ ] pointer_variable;

এখানে 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

উপরের প্রোগ্রামে, তিনটি পয়েন্টার ভেরিয়েবলকে ptr1, ptr2 এবং ptr3 হিসাবে ঘোষণা করা হয়েছে। পয়েন্টার ভেরিয়েবল ptr1 এবং ptr2 নতুন() ব্যবহার করে মান দিয়ে শুরু করা হয়েছে এবং ptr3 নতুন() ফাংশন দ্বারা মেমরির বরাদ্দকৃত ব্লক সংরক্ষণ করছে।

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

অ্যারের উপাদানগুলি ব্যবহারকারী দ্বারা মুদ্রিত হয় এবং উপাদানগুলির যোগফল মুদ্রিত হয়। বরাদ্দ মেমরি মুছে ফেলার জন্য; ডিলিট ptr1, ডিলিট pt2 এবং delete[] ptr3 ব্যবহার করা হয়।

delete ptr1;
delete ptr2;
delete[] ptr3;

মুক্ত()

ফাংশন 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

উপরের প্রোগ্রামে, চারটি ভেরিয়েবল ঘোষণা করা হয়েছে এবং তাদের মধ্যে একটি হল একটি পয়েন্টার ভেরিয়েবল *p যা বরাদ্দ করা মেমরি সংরক্ষণ করছে।

int n = 4, i, *p, s = 0;
p = (int*) malloc(n * sizeof(int));

অ্যারের উপাদানগুলি ব্যবহারকারী দ্বারা দেওয়া হয় এবং তাদের মানগুলির যোগফল মুদ্রিত হয়। পয়েন্টার মুক্ত করার কোডটি নিম্নরূপ -

free(p);

  1. C++ এ ডিলিট() অপারেটর

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

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

  4. C++ এ নতুন এবং ডিলিট অপারেটর