Функција фрее () у Ц ++ ослобађа блок меморије који је претходно додељен помоћу функција цаллоц, маллоц или реаллоц, чинећи га доступним за даља додељивања.
Функција фрее () у Ц ++ ослобађа блок меморије који је претходно додељен помоћу функција цаллоц, маллоц или реаллоц, чинећи га доступним за даља додељивања.
Функција фрее () не мења вредност показивача, то јест и даље показује на исто меморијско место.
бесплатни () прототип
празнина слободна (воид * птр);
Функција је дефинисана у датотеци заглавља.
бесплатни () параметри
- птр: Показивач на меморијски блок претходно додељен маллоц, цаллоц или реаллоц. Показивач може бити нула или не мора указивати на блок меморије додељен функцијама цаллоц, маллоц или реаллоц.
- Ако је птр нулл, функција фрее () не ради ништа.
- Ако птр не усмери на меморијски блок додељен функцијама цаллоц, маллоц или реаллоц, то узрокује недефинисано понашање.
бесплатно () Повратна вредност
Функција фрее () не враћа ништа. Једноставно нам чини меморијски блок доступним.
Пример 1: Како функција фрее () ради са маллоц ()?
#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; )
Када покренете програм, излаз ће бити:
Унесите 5 целих бројева 21 3 -10 -13 45 Корисник је унео вредност 21 3 -10 -13 45 Вредност смећа 6690624 0 6685008 0 45
Пример 2: Како функција фрее () функционише са цаллоц ()?
#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; )
Када покренете програм, излаз ће бити:
Пре ослобађања Адреса = 0к6а1530 Вредност = 5.233 Након ослобађања Адреса = 0к6а1530 Вредност = 9.7429е-039
Пример 3: Како функција фрее () функционише са реаллоц ()?
#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