C ++ gratuito () - Libreria standard C ++

La funzione free () in C ++ dealloca un blocco di memoria precedentemente allocato utilizzando le funzioni calloc, malloc o realloc, rendendolo disponibile per ulteriori allocazioni.

La funzione free () in C ++ dealloca un blocco di memoria precedentemente allocato utilizzando le funzioni calloc, malloc o realloc, rendendolo disponibile per ulteriori allocazioni.

La funzione free () non modifica il valore del puntatore, ovvero punta ancora alla stessa posizione di memoria.

prototipo free ()

 void free (void * ptr);

La funzione è definita nel file di intestazione.

parametri free ()

  • ptr: un puntatore a un blocco di memoria precedentemente allocato con malloc, calloc o realloc. Il puntatore può essere nullo o non può puntare a un blocco di memoria allocato dalle funzioni calloc, malloc o realloc.
    • Se ptr è null, la funzione free () non fa nulla.
    • Se ptr non punta a un blocco di memoria allocato dalle funzioni calloc, malloc o realloc, provoca un comportamento indefinito.

free () Valore di ritorno

La funzione free () non restituisce nulla. Rende semplicemente disponibile il blocco di memoria.

Esempio 1: come funziona la funzione free () con 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; )

Quando esegui il programma, l'output sarà:

 Immettere 5 numeri interi 21 3-10-13 45 Valore inserito dall'utente 21 3-10-13 45 Garbage Value 6690624 0 6685008 0 45

Esempio 2: come funziona la funzione free () con 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; )

Quando esegui il programma, l'output sarà:

 Prima di liberare Indirizzo = 0x6a1530 Valore = 5.233 Dopo aver liberato Indirizzo = 0x6a1530 Valore = 9.7429e-039

Esempio 3: come funziona la funzione free () con 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

Articoli interessanti...