सी ++ फ्री () - सी ++ स्टैंडर्ड लाइब्रेरी

C ++ में मुफ्त () फ़ंक्शन कॉलोक, मॉलोक या रियललॉक फ़ंक्शन का उपयोग करके पहले आवंटित की गई मेमोरी के एक ब्लॉक को हटाता है, जिससे यह आगे के आवंटन के लिए उपलब्ध होता है।

C ++ में मुफ्त () फ़ंक्शन कॉलोक, मॉलोक या रियललॉक फ़ंक्शन का उपयोग करके पहले आवंटित की गई मेमोरी के एक ब्लॉक को हटाता है, जिससे यह आगे के आवंटन के लिए उपलब्ध होता है।

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

मुक्त () प्रोटोटाइप

 शून्य मुक्त (शून्य * ptr);

फ़ंक्शन को हेडर फ़ाइल में परिभाषित किया गया है।

मुफ्त () पैरामीटर

  • पीटीआर: एक मेमोरी ब्लॉक के लिए एक पॉइंटर जो पहले मॉलोक, कॉलोक या रियललोक के साथ आवंटित किया गया था। पॉइंटर, मैलोक या रियललोक फ़ंक्शंस द्वारा आबंटित मेमोरी के एक ब्लॉक की ओर इशारा किया जा सकता है।
    • यदि ptr शून्य है, तो मुफ्त () फ़ंक्शन कुछ नहीं करता है।
    • यदि ptr कॉलॉक, मॉलोक या रियललॉक फ़ंक्शन द्वारा आवंटित मेमोरी ब्लॉक को इंगित नहीं करता है, तो यह अपरिभाषित व्यवहार का कारण बनता है।

मुक्त () वापसी मूल्य

मुफ्त () फ़ंक्शन कुछ भी नहीं देता है। यह केवल मेमोरी ब्लॉक को हमारे लिए उपलब्ध कराता है।

उदाहरण 1: मुफ्त () फ़ंक्शन मॉलोक () के साथ कैसे काम करता है?

 #include #include using namespace std; int main() ( int *ptr; ptr = (int*) malloc(5*sizeof(int)); cout << "Enter 5 integers" << endl; for (int i=0; i> *(ptr+i); ) cout << endl << "User entered value"<< endl; for (int i=0; i<5; i++) ( cout << *(ptr+i) << " "; ) free(ptr); /* prints a garbage value after ptr is free */ cout << "Garbage Value" << endl; for (int i=0; i<5; i++) ( cout << *(ptr+i) << " "; ) return 0; )

जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:

 5 पूर्णांक 21 3 -10 -13 45 दर्ज करें प्रयोक्ता ने दर्ज किया मूल्य 21 3 -10 -13 45 कचरा मूल्य 6690624 0 6685008 0 45

उदाहरण 2: कॉलोक () के साथ कैसे निशुल्क () फ़ंक्शन काम करता है?

 #include #include #include using namespace std; int main() ( float *ptr; ptr = (float*) calloc(1,sizeof(float)); *ptr = 5.233; cout << "Before freeing" << endl; cout << "Address = " << ptr << endl; cout << "Value = " << *ptr << endl; free(ptr); cout << "After freeing" << endl; /* ptr remains same, *ptr changes*/ cout << "Address = " << ptr << endl; cout << "Value = " << *ptr << endl; return 0; )

जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:

 मुक्त पते से पहले = 0x6a1530 मान = 5.233 पता मुक्त करने के बाद = 0x6a1530 मान = 9.7429e-039

उदाहरण 3: मुफ्त () फंक्शन रियललोक () के साथ कैसे काम करता है?

 #include #include #include using namespace std; int main() ( char *ptr; ptr = (char*) malloc(10*sizeof(char)); strcpy(ptr,"Hello C++"); cout << "Before reallocating: " << ptr << endl; /* reallocating memory */ ptr = (char*) realloc(ptr,20); strcpy(ptr,"Hello, Welcome to C++"); cout << "After reallocating: " < 

When you run the program, the output will be:

 Before reallocating: Hello C++ After reallocating: Hello, Welcome to C++ Garbage Value: @↨/

Example 4: free() function with other cases

 #include #include using namespace std; int main() ( int x = 5; int *ptr1 = NULL; /* allocatingmemory without using calloc, malloc or realloc*/ int *ptr2 = &x; if(ptr1) ( cout << "Pointer is not Null" << endl; ) else ( cout << "Pointer is Null" << endl; ) /* Does nothing */ free(ptr1); cout << *ptr2; /* gives a runtime error if free(ptr2) is executed*/ // free(ptr2); return 0; )

When you run the program, the output will be:

 Pointer is Null 5

दिलचस्प लेख...