C ++ δωρεάν () - C ++ Standard Βιβλιοθήκη

Η ελεύθερη () συνάρτηση στο C ++ αφαιρεί ένα μπλοκ μνήμης που είχε εκχωρηθεί προηγουμένως χρησιμοποιώντας συναρτήσεις calloc, malloc ή realloc, καθιστώντας τη διαθέσιμη για περαιτέρω εκχωρήσεις.

Η ελεύθερη () συνάρτηση στο C ++ αφαιρεί ένα μπλοκ μνήμης που είχε εκχωρηθεί προηγουμένως χρησιμοποιώντας συναρτήσεις calloc, malloc ή realloc, καθιστώντας τη διαθέσιμη για περαιτέρω εκχωρήσεις.

Η συνάρτηση free () δεν αλλάζει την τιμή του δείκτη, δηλαδή εξακολουθεί να δείχνει στην ίδια θέση μνήμης.

δωρεάν () πρωτότυπο

 χωρίς κενό (κενό * ptr);

Η συνάρτηση ορίζεται στο αρχείο κεφαλίδας.

δωρεάν () Παράμετροι

  • ptr: Ένας δείκτης σε ένα μπλοκ μνήμης που είχε προηγουμένως εκχωρηθεί με malloc, calloc ή realloc. Ο δείκτης μπορεί να είναι μηδενικός ή ενδέχεται να μην δείχνει ένα μπλοκ μνήμης που κατανέμεται από συναρτήσεις calloc, malloc ή realloc.
    • Εάν το ptr είναι null, η λειτουργία free () δεν κάνει τίποτα.
    • Εάν το ptr δεν δείχνει ένα μπλοκ μνήμης που έχει εκχωρηθεί από συναρτήσεις calloc, malloc ή realloc, προκαλεί απροσδιόριστη συμπεριφορά.

δωρεάν () Επιστροφή αξία

Η δωρεάν () συνάρτηση δεν επιστρέφει τίποτα. Απλώς κάνει το μπλοκ μνήμης διαθέσιμο για εμάς.

Παράδειγμα 1: Πώς λειτουργεί η ελεύθερη () λειτουργία με malloc ();

 #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: Πώς λειτουργεί η ελεύθερη () λειτουργία με calloc ();

 #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: Πώς λειτουργεί η ελεύθερη () λειτουργία με το realloc ();

 #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

ενδιαφέροντα άρθρα...