Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में delete() और free()

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);
  1. - C/C++ में malloc() और free() कैसे काम करते हैं?

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

  1. - C/C++ में new/delete और malloc/free का अंतर

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

  1. - C++ में new और delete ऑपरेटर्स

    new ऑपरेटर हीप में मेमोरी आवंटन का अनुरोध करता है। यदि पर्याप्त मेमोरी उपलब्ध है, तो पॉइंटर वेरिएबल को आरंभ करके उसका पता लौटाता है। सिंटैक्स pointer_variable = new datatype; आरंभीकरण के साथ pointer_variable = new datatype(value); ब्लॉक आवंटन (ऐरे) pointer_variable = new datatype[size]; उदाहरण