delete()
delete ऑपरेटर का उपयोग मेमोरी को डीएलोकेट करने के लिए किया जाता है। उपयोगकर्ता के पास इस delete ऑपरेटर द्वारा बनाए गए पॉइंटर वेरिएबल को डीएलोकेट करने का विशेषाधिकार होता है।
C++ भाषा में delete ऑपरेटर का सिंटैक्स यहां दिया गया है,
delete pointer_variable;
आवंटित मेमोरी के ब्लॉक को हटाने का सिंटैक्स यहां दिया गया है,
delete[ ] pointer_variable;
C++ भाषा में delete ऑपरेटर का एक उदाहरण यहां दिया गया है,
उदाहरण
#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 << "पॉइंटर वेरिएबल 1 का मान: " << *ptr1 << endl;
cout << "पॉइंटर वेरिएबल 2 का मान: " << *ptr2 << endl;
if (!ptr3)
cout << "मेमोरी आवंटन विफल\n";
else {
for (int i = 10; i < 15; i++)
ptr3[i] = i+1;
cout << "मेमोरी ब्लॉक में संग्रहीत मान: ";
for (int i = 10; i < 15; i++)
cout << ptr3[i] << " ";
}
delete ptr1;
delete ptr2;
delete[] ptr3;
return 0;
}
आउटपुट
पॉइंटर वेरिएबल 1 का मान: 28 पॉइंटर वेरिएबल 2 का मान: 299.121 मेमोरी ब्लॉक में संग्रहीत मान: 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;
सरणी के तत्व उपयोगकर्ता द्वारा प्रिंट किए जाते हैं और तत्वों का योग प्रिंट किया जाता है। आवंटित मेमोरी को हटाने के लिए; delete ptr1, delete ptr2 और delete[] ptr3 का उपयोग किया जाता है।
delete ptr1; delete ptr2; delete[] ptr3;
free()
free() फ़ंक्शन का उपयोग malloc() द्वारा आवंटित मेमोरी को डीएलोकेट करने के लिए किया जाता है। यह पॉइंटर के मान को नहीं बदलता है जिसका अर्थ है कि यह अभी भी उसी मेमोरी लोकेशन को इंगित करता है।
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("\nसरणी के तत्व दर्ज करें: ");
for (i = 0; i < n; ++i) {
scanf("%d", p + i);
s += *(p + i);
}
printf("\nयोग: %d", s);
free(p);
return 0;
}
आउटपुट
सरणी के तत्व दर्ज करें: 32 23 21 28 योग: 104
उपरोक्त प्रोग्राम में, चार वेरिएबल घोषित किए गए हैं और उनमें से एक पॉइंटर वेरिएबल *p है जो आवंटित मेमोरी को संग्रहीत कर रहा है।
int n = 4, i, *p, s = 0; p = (int*) malloc(n * sizeof(int));
सरणी के तत्व उपयोगकर्ता द्वारा दिए जाते हैं और उनके मानों का योग प्रिंट किया जाता है। पॉइंटर को मुक्त करने का कोड इस प्रकार है -
free(p);