new/delete
new ऑपरेटर हीप में मेमोरी आवंटन का अनुरोध करता है। यदि पर्याप्त मेमोरी उपलब्ध है, तो यह मेमोरी को पॉइंटर वेरिएबल में इनिशियलाइज़ करता है और इसका पता लौटाता है।
delete ऑपरेटर का उपयोग मेमोरी को डीएलोकेट करने के लिए किया जाता है। यूज़र के पास इस 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
malloc/free
malloc() फ़ंक्शन का उपयोग अनुरोधित आकार के बाइट्स आवंटित करने के लिए किया जाता है और यह आवंटित मेमोरी के पहले बाइट का पॉइंटर लौटाता है। यदि विफल होता है तो नल पॉइंटर लौटाता है।
free() फ़ंक्शन का उपयोग 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("\nएरर! मेमोरी आवंटित नहीं हुई।");
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 8 योग: 84