Hàm free() giải phóng bộ nhớ cấp phát bởi malloc(), calloc(), realloc(). Cú pháp đơn giản: free(ptr). Chỉ nhận con trỏ, không nhận kích thước. Vậy free() biết kích thước khối cần giải phóng như thế nào?
Khi cấp phát động, bộ nhớ được cấp trong heap. Hệ thống cấp phát thêm 1 word (thường là size_t) lớn hơn kích thước yêu cầu. Word thêm này lưu trữ kích thước khối. free() dùng thông tin này để dọn dẹp đúng kích thước.