Free () -funksjonen i C ++ distribuerer en minneblokk som tidligere er tildelt ved bruk av calloc-, malloc- eller realloc-funksjoner, noe som gjør den tilgjengelig for videre tildelinger.
Free () -funksjonen i C ++ distribuerer en minneblokk som tidligere er tildelt ved bruk av calloc-, malloc- eller realloc-funksjoner, noe som gjør den tilgjengelig for videre tildelinger.
Free () -funksjonen endrer ikke verdien på pekeren, det vil si at den fremdeles peker til samme minneplassering.
gratis () prototype
ugyldig gratis (ugyldig * ptr);
Funksjonen er definert i topptekstfilen.
gratis () Parametere
- ptr: En peker til en minneblokk som tidligere er tildelt malloc, calloc eller realloc. Pekeren kan være null eller peke ikke på en minneblokk som er tildelt av calloc-, malloc- eller realloc-funksjoner.
- Hvis ptr er null, gjør ikke free () -funksjonen noe.
- Hvis ptr ikke peker på en minneblokk tildelt av calloc-, malloc- eller realloc-funksjoner, forårsaker det udefinert oppførsel.
gratis () Returverdi
Gratis () -funksjonen returnerer ingenting. Det gjør ganske enkelt minneblokken tilgjengelig for oss.
Eksempel 1: Hvordan fungerer gratis () -funksjonen med 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; )
Når du kjører programmet, vil utdataene være:
Angi 5 heltall 21 3-10-13 13 Brukerinntastet verdi 21 3 -10-13 45 Søppelverdi 6690624 0 6685008 0 45
Eksempel 2: Hvordan fungerer gratis () -funksjonen med 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; )
Når du kjører programmet, vil utdataene være:
Før frigjøring av adresse = 0x6a1530 Verdi = 5,233 Etter frigjøring av adresse = 0x6a1530 verdi = 9,7429e-039
Eksempel 3: Hvordan fungerer gratis () -funksjonen med 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