Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> 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 को new() का उपयोग करके मान के साथ प्रारंभ किया जाता है और ptr3 स्मृति के आवंटित ब्लॉक को new() फ़ंक्शन द्वारा संग्रहीत कर रहा है।

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

सरणी के तत्व उपयोगकर्ता द्वारा मुद्रित किए जाते हैं और तत्वों का योग मुद्रित होता है। आवंटित स्मृति को हटाने के लिए; ptr1 हटाएं, pt2 हटाएं और हटाएं [] ptr3 का उपयोग करें।

delete ptr1;
delete ptr2;
delete[] ptr3;

मुफ़्त ()

फ़ंक्शन फ्री () का उपयोग मॉलॉक () द्वारा आवंटित मेमोरी को हटाने के लिए किया जाता है। यह पॉइंटर के मान को नहीं बदलता है जिसका अर्थ है कि यह अभी भी उसी मेमोरी लोकेशन को इंगित करता है।

यहाँ C भाषा में free() का सिंटैक्स दिया गया है,

void free(void *pointer_name);

यहां,

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. मॉलोक () और फ्री () सी/सी ++ में कैसे काम करते हैं?

    मॉलोक () फ़ंक्शन malloc () का उपयोग बाइट्स के अनुरोधित आकार को आवंटित करने के लिए किया जाता है और यह आवंटित मेमोरी के पहले बाइट के लिए एक पॉइंटर देता है। विफल होने पर यह शून्य सूचक लौटाता है। यहाँ C भाषा में malloc() का सिंटैक्स दिया गया है, pointer_name = (cast-type*) malloc(size); यहाँ, poin

  1. C/C++ में new/delete और malloc/free में क्या अंतर है?

    नया/हटाएं नया ऑपरेटर ढेर में स्मृति आवंटन के लिए अनुरोध करता है। यदि पर्याप्त मेमोरी उपलब्ध है, तो यह मेमोरी को पॉइंटर वेरिएबल में इनिशियलाइज़ करता है और अपना पता देता है। डिलीट ऑपरेटर का उपयोग मेमोरी को डीलोकेट करने के लिए किया जाता है। उपयोगकर्ता को इस डिलीट ऑपरेटर द्वारा बनाए गए पॉइंटर वेरिएबल

  1. C++ में नया और डिलीट ऑपरेटर

    नया ऑपरेटर नया ऑपरेटर ढेर में स्मृति आवंटन के लिए अनुरोध करता है। यदि पर्याप्त मेमोरी उपलब्ध है, तो यह मेमोरी को पॉइंटर वेरिएबल में इनिशियलाइज़ करता है और अपना पता देता है। यहाँ C++ भाषा में new ऑपरेटर का सिंटैक्स दिया गया है, pointer_variable = new datatype; मेमोरी को इनिशियलाइज़ करने के लिए सिं