Bộ nhớ được cấp có trống không?

Mục lục:

Bộ nhớ được cấp có trống không?
Bộ nhớ được cấp có trống không?
Anonim

Bộ nhớ được cấp phát bằng cách sử dụng các hàm malloc và calloc không được tự cấp phát. Do đó, phương phápfreeđược sử dụng bất cứ khi nào việc cấp phát bộ nhớ động diễn ra. Nó giúp giảm lãng phí bộ nhớ bằng cách giải phóng bộ nhớ.

Làm thế nào để bộ nhớ được cấp phát được giải phóng?

Trong C, hàm thư viện malloc được sử dụng để cấp phát một khối bộ nhớ trên heap. Chương trình truy cập khối bộ nhớ này thông qua một con trỏ mà malloc trả về. Khi bộ nhớ không còn cần thiết nữa, con trỏsẽ được chuyển tới chỗ trống. Con trỏ này sẽ phân bổ bộ nhớ để nó có thể được sử dụng cho các mục đích khác.

Điều gì xảy ra nếu bạn không giải phóng bộ nhớ được cấp phát?

Trong hầu hết các trường hợp, việc phân bổ bộ nhớ ngay trước khi thoát chương trình là vô nghĩa. Hệ điều hành sẽ lấy lại nó bằng mọi cách. Miễn phísẽ chạm và trang trong các đối tượng chết; hệ điều hành sẽ không. Do đó: Hãy cẩn thận với "công cụ phát hiện rò rỉ" đếm phân bổ.

Cấp phát bộ nhớ có tốn kém không?

Một phép đo ngây thơ về chi phí phân bổ và giải phóng khối bộ nhớ lớn sẽ kết luận rằng chi phí khoảng7,5 μs cho mỗi cặp cấp phát /miễn phí. Tuy nhiên, có ba chi phí trên mỗi MB riêng biệt cho các phân bổ lớn.

Có thể phân bổ lại không gian bộ nhớ được cấp phát nếu có bằng cách nào?

Hàm realloc phân bổ, phân bổ lại hoặc giải phóng khối bộ nhớ được chỉ định bởi old_blk dựa trên các quy tắc sau: Nếuold_blk là NULL, một khối bộ nhớ mới có kích thước byte Làđược phân bổ. Nếu kích thước bằng 0, hàm miễn phí được gọi để giải phóng bộ nhớ được trỏ đến bởi old_blk.

Đề xuất: