Computer >> Máy Tính >  >> Lập trình >> lập trình C

Làm thế nào để free () biết dung lượng bộ nhớ sẽ được phân bổ?

Hàm free () được sử dụng để phân bổ bộ nhớ trong khi nó được cấp phát bằng cách sử dụng malloc (), calloc () và realloc (). Cú pháp của miễn phí rất đơn giản. Đơn giản là chúng tôi sử dụng miễn phí với con trỏ. Sau đó, nó có thể dọn dẹp bộ nhớ.

free(ptr);

Free () không lấy bất kỳ kích thước nào làm tham số mà chỉ là con trỏ. Vì vậy, câu hỏi đặt ra, đó là làm thế nào để hàm free () biết về kích thước của khối để phân bổ?

Khi chúng ta sử dụng các kỹ thuật cấp phát bộ nhớ động để cấp phát bộ nhớ, thì điều này được thực hiện trong phần heap thực tế. Nó tạo ra một từ lớn hơn kích thước được yêu cầu. Từ bổ sung này được sử dụng để lưu trữ kích thước. Kích thước này được sử dụng bởi free () khi nó muốn xóa không gian bộ nhớ.