De functie free () in C ++ wijst een blok geheugen vrij dat eerder was toegewezen met behulp van calloc-, malloc- of realloc-functies, waardoor het beschikbaar wordt voor verdere toewijzingen.
De functie free () in C ++ wijst een blok geheugen vrij dat eerder was toegewezen met behulp van calloc-, malloc- of realloc-functies, waardoor het beschikbaar wordt voor verdere toewijzingen.
De functie free () verandert de waarde van de pointer niet, dat wil zeggen dat hij nog steeds naar dezelfde geheugenlocatie verwijst.
gratis () prototype
leegte gratis (void * ptr);
De functie is gedefinieerd in het header-bestand.
free () Parameters
- ptr: een pointer naar een geheugenblok dat eerder was toegewezen met malloc, calloc of realloc. De aanwijzer kan nul zijn of kan niet naar een geheugenblok wijzen dat is toegewezen door calloc-, malloc- of realloc-functies.
- Als ptr null is, doet de functie free () niets.
- Als ptr niet verwijst naar een geheugenblok dat is toegewezen door calloc-, malloc- of realloc-functies, veroorzaakt dit ongedefinieerd gedrag.
free () Retourwaarde
De functie free () geeft niets terug. Het maakt het geheugenblok eenvoudig voor ons beschikbaar.
Voorbeeld 1: hoe werkt de functie free () met 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; )
Wanneer u het programma uitvoert, is de uitvoer:
Voer 5 gehele getallen in 21 3-10-13 45 Door de gebruiker ingevoerde waarde 21 3-10-13 45 Garbage Value 6690624 0 6685008 0 45
Voorbeeld 2: hoe werkt de functie free () met 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; )
Wanneer u het programma uitvoert, is de uitvoer:
Voor vrijmaken Adres = 0x6a1530 Waarde = 5,233 Na vrijmaken Adres = 0x6a1530 Waarde = 9,7429e-039
Voorbeeld 3: Hoe werkt de functie free () met 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