C ++ besplatno () - C ++ standardna knjižnica

Funkcija free () u C ++ oslobađa blok memorije prethodno dodijeljen pomoću funkcija calloc, malloc ili realloc, čineći ga dostupnim za daljnje dodjeljivanje.

Funkcija free () u C ++ oslobađa blok memorije prethodno dodijeljen pomoću funkcija calloc, malloc ili realloc, čineći ga dostupnim za daljnje dodjeljivanje.

Funkcija free () ne mijenja vrijednost pokazivača, odnosno još uvijek pokazuje na isto memorijsko mjesto.

besplatni () prototip

 praznina slobodna (void * ptr);

Funkcija je definirana u zaglavnoj datoteci.

free () Parametri

  • ptr: pokazivač na memorijski blok prethodno dodijeljen malloc, calloc ili realloc. Pokazivač može biti nulan ili ne mora ukazivati ​​na blok memorije dodijeljen funkcijama calloc, malloc ili realloc.
    • Ako je ptr null, funkcija free () ne radi ništa.
    • Ako ptr ne usmjeri na memorijski blok dodijeljen funkcijama calloc, malloc ili realloc, to uzrokuje nedefinirano ponašanje.

besplatno () Povratna vrijednost

Funkcija free () ne vraća ništa. Jednostavno nam čini memorijski blok dostupnim.

Primjer 1: Kako funkcija free () radi s 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; )

Kada pokrenete program, izlaz će biti:

 Unesite 5 cijelih brojeva 21 3 -10 -13 45 Korisnik je unijeo vrijednost 21 3 -10 -13 45 Vrijednost smeća 6690624 0 6685008 0 45

Primjer 2: Kako funkcija free () radi s 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; )

Kada pokrenete program, izlaz će biti:

 Prije oslobađanja Adresa = 0x6a1530 Vrijednost = 5.233 Nakon oslobađanja Adresa = 0x6a1530 Vrijednost = 9.7429e-039

Primjer 3: Kako besplatna () funkcija radi s 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

Zanimljivi članci...