C ++ zadarmo () - štandardná knižnica C ++

Funkcia free () v C ++ uvoľní blok pamäte, ktorý bol predtým pridelený pomocou funkcií calloc, malloc alebo realloc, čím ho sprístupní pre ďalšie alokácie.

Funkcia free () v C ++ uvoľní blok pamäte, ktorý bol predtým pridelený pomocou funkcií calloc, malloc alebo realloc, čím ho sprístupní pre ďalšie alokácie.

Funkcia free () nezmení hodnotu ukazovateľa, to znamená, že stále smeruje na rovnaké miesto v pamäti.

bezplatný () prototyp

 void free (void * ptr);

Funkcia je definovaná v hlavičkovom súbore.

free () parametre

  • ptr: Ukazovateľ na blok pamäte, ktorý bol predtým pridelený ako malloc, calloc alebo realloc. Ukazovateľ môže mať hodnotu null alebo nemusí ukazovať na blok pamäte pridelený funkciami calloc, malloc alebo realloc.
    • Ak je ptr null, funkcia free () nerobí nič.
    • Ak ptr neukazuje na blok pamäte pridelený funkciami calloc, malloc alebo realloc, spôsobí to nedefinované správanie.

zadarmo () Návratová hodnota

Funkcia free () nevracia nič. Jednoducho nám sprístupňuje blok pamäte.

Príklad 1: Ako funguje funkcia free () 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; )

Po spustení programu bude výstup:

 Zadajte 5 celých čísel 21 3 -10 -13 45 Hodnota zadaná používateľom 21 3 -10 -13 45 Hodnota odpadu 6690624 0 6685008 0 45

Príklad 2: Ako funguje funkcia free () 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; )

Po spustení programu bude výstup:

 Pred uvoľnením adresy = 0x6a1530 Hodnota = 5,233 Po uvoľnení adresy = 0x6a1530 Hodnota = 9,7429e-039

Príklad 3: Ako funguje funkcia free () 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

Zaujímavé články...