C ++ free () - Biblioteka standardowa C ++

Funkcja free () w C ++ zwalnia blok pamięci przydzielony wcześniej przy użyciu funkcji calloc, malloc lub realloc, udostępniając go do dalszych alokacji.

Funkcja free () w C ++ zwalnia blok pamięci przydzielony wcześniej przy użyciu funkcji calloc, malloc lub realloc, udostępniając go do dalszych alokacji.

Funkcja free () nie zmienia wartości wskaźnika, to znaczy nadal wskazuje to samo miejsce w pamięci.

free () prototyp

 void free (void * ptr);

Funkcja jest zdefiniowana w pliku nagłówkowym.

free () Parametry

  • ptr: wskaźnik do bloku pamięci wcześniej przydzielonego za pomocą malloc, calloc lub realloc. Wskaźnik może mieć wartość null lub nie wskazywać na blok pamięci przydzielony przez funkcje calloc, malloc lub realloc.
    • Jeśli ptr ma wartość null, funkcja free () nic nie robi.
    • Jeśli ptr nie wskazuje na blok pamięci przydzielony przez funkcje calloc, malloc lub realloc, powoduje to niezdefiniowane zachowanie.

free () Wartość zwracana

Funkcja free () nic nie zwraca. Po prostu udostępnia nam blok pamięci.

Przykład 1: Jak funkcja free () działa z 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; )

Po uruchomieniu programu wynik będzie następujący:

 Wpisz 5 liczb całkowitych 21 3-10-13 45 Wartość wprowadzona przez użytkownika 21 3-10-13 45 Wartość śmieci 6690624 0 6685008 0 45

Przykład 2: Jak funkcja free () działa z 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; )

Po uruchomieniu programu wynik będzie następujący:

 Przed zwolnieniem Adres = 0x6a1530 Wartość = 5,233 Po zwolnieniu Adres = 0x6a1530 Wartość = 9.7429e-039

Przykład 3: Jak funkcja free () działa z 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

Interesujące artykuły...