C ++ miễn phí () - Thư viện chuẩn C ++

Hàm free () trong C ++ giải quyết một khối bộ nhớ đã được cấp phát trước đó bằng cách sử dụng các hàm calloc, malloc hoặc realloc, làm cho nó có sẵn để phân bổ thêm.

Hàm free () trong C ++ giải quyết một khối bộ nhớ đã được cấp phát trước đó bằng cách sử dụng các hàm calloc, malloc hoặc realloc, làm cho nó có sẵn để phân bổ thêm.

Hàm free () không thay đổi giá trị của con trỏ, tức là nó vẫn trỏ đến cùng một vị trí bộ nhớ.

nguyên mẫu miễn phí ()

 void tự do (void * ptr);

Hàm được định nghĩa trong tệp tiêu đề.

miễn phí () Tham số

  • ptr: Một con trỏ tới một khối bộ nhớ được cấp phát trước đó với malloc, calloc hoặc realloc. Con trỏ có thể rỗng hoặc có thể không trỏ đến một khối bộ nhớ được cấp phát bởi các hàm calloc, malloc hoặc realloc.
    • Nếu ptr là null, hàm free () không làm gì cả.
    • Nếu ptr không trỏ đến khối bộ nhớ được cấp phát bởi các hàm calloc, malloc hoặc realloc, nó sẽ gây ra hành vi không xác định.

miễn phí () Giá trị trả lại

Hàm free () không trả về gì. Nó chỉ đơn giản là làm cho khối bộ nhớ có sẵn cho chúng ta.

Ví dụ 1: Hàm free () hoạt động như thế nào với 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; )

Khi bạn chạy chương trình, đầu ra sẽ là:

 Nhập 5 số nguyên 21 3 -10 -13 45 Người dùng đã nhập giá trị 21 3 -10 -13 45 Giá trị rác 6690624 0 6685008 0 45

Ví dụ 2: Hàm free () hoạt động như thế nào với 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; )

Khi bạn chạy chương trình, đầu ra sẽ là:

 Trước khi giải phóng Địa chỉ = 0x6a1530 Giá trị = 5.233 Sau khi giải phóng Địa chỉ = 0x6a1530 Giá trị = 9,7429e-039

Ví dụ 3: Hàm free () hoạt động như thế nào với 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

thú vị bài viết...