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

C++ में फ्री फ़ंक्शन क्या है?

free() फ़ंक्शन

C/C++ लाइब्रेरी फ़ंक्शन void free(void *ptr) calloc, malloc, या realloc को कॉल करके पहले आवंटित मेमोरी को डिएलोकेट करता है।

डिक्लेरेशन

void free(void *ptr)

पैरामीटर

  • ptr - malloc, calloc, या realloc के साथ पहले आवंटित मेमोरी ब्लॉक का पॉइंटर, जिसे डिएलोकेट किया जाना है
  • यदि नल पॉइंटर पास किया जाता है, तो कोई कार्रवाई नहीं होती

उदाहरण

#include <iostream>
#include <cstdlib>  // malloc, realloc, free के लिए
#include <cstring>  // strcpy, strcat के लिए
using namespace std;

int main() {
    char *str;
    
    /* प्रारंभिक मेमोरी आवंटन */
    str = (char *) malloc(15);
    strcpy(str, "tutorialspoint");
    cout << "String = " << str << ", Address = " << &str << endl;
    
    /* मेमोरी रीअलोकेट करना */
    str = (char *) realloc(str, 25);
    strcat(str, ".com");
    cout << "String = " << str << ", Address = " << &str << endl;
    
    /* आवंटित मेमोरी डिएलोकेट करें */
    free(str);
    
    return 0;
}

आउटपुट

String = tutorialspoint, Address = 0x22fe38
String = tutorialspoint.com, Address = 0x22fe38

महत्वपूर्ण नियम

  • केवल malloc/calloc/realloc से आवंटित मेमोरी पर free() का उपयोग करें
  • new के साथ आवंटित मेमोरी पर delete का उपयोग करें
  • new[] के साथ आवंटित मेमोरी पर delete[] का उपयोग करें
  • free() के बाद पॉइंटर डैंगलिंग हो जाता है - इसे nullptr पर सेट करें
  • डबल free() अपरिभाषित व्यवहार का कारण बनता है

सही उपयोग पैटर्न

// C-स्टाइल
int* arr = (int*)malloc(n * sizeof(int));
if (arr) {
    // उपयोग करें
    free(arr);
    arr = nullptr;
}

// C++-स्टाइल (पसंदीदा)
int* arr = new int[n];
// उपयोग करें
delete[] arr;
arr = nullptr;

// बेस्ट: स्मार्ट पॉइंटर्स/कंटेनर्स
vector vec(n);  // स्वचालित प्रबंधन
unique_ptr up(new int[n]);

आम गलतियां

गलतीपरिणाम
stack वेरिएबल पर free()अपरिभाषित व्यवहार, क्रैश
new मेमोरी पर free()अपरिभाषित व्यवहार
malloc मेमोरी पर deleteअपरिभाषित व्यवहार
डबल freeहीप करप्शन, क्रैश
free के बाद उपयोगडैंगलिंग पॉइंटर, अपरिभाषित व्यवहार
  1. - C++ में swap() फ़ंक्शन

    swap() फ़ंक्शन दो संख्याओं को स्वैप (अदला-बदली) करने के लिए उपयोग किया जाता है। तीसरे वेरिएबल की आवश्यकता नहीं होती। <algorithm> या <utility> हेडर में परिभाषित (C++11 से)। सिंटैक्स void swap(Type& a, Type& b); उदाहरण 1: मान द्वारा पास (मान बदलते नहीं) #include <bits/stdc++.

  1. - C++ में आर्गुमेंट-डिपेंडेंट लुकअप (कोएनिग लुकअप) क्या है?

    आर्गुमेंट-डिपेंडेंट लुकअप (ADL) फंक्शन-कॉल एक्सप्रेशन में अनक्वालिफाइड फंक्शन नामों को देखने के लिए एक प्रोटोकॉल है। इन फंक्शन कॉल एक्सप्रेशन में ओवरलोडेड ऑपरेटर्स के लिए इम्प्लिसिट फंक्शन कॉल शामिल हैं। फंक्शन नामों को उनके आर्गुमेंट्स के नेमस्पेस में देखा जाता है, इसके अलावा सामान्य अनक्वालिफाइड

  1. - लिनक्स पर C++ के लिए सर्वश्रेष्ठ IDE कौन सा है?

    बड़े प्रोजेक्ट्स को केवल टेक्स्ट एडिटर्स पर प्रबंधित करना मुश्किल होता है। ऐसे मामलों में IDE का उपयोग करने से आप अधिक उत्पादक और कम निराश होंगे। विभिन्न प्रकार के IDE उपलब्ध हैं और आपको अपनी आवश्यकताओं के अनुरूप सही चुनना चाहिए। लिनक्स पर C++ के लिए कोई एक सर्वश्रेष्ठ IDE नहीं है; आपको अपने टूल को