Tôi đang làm việc trên một cơ sở mã cũ và hầu như mọi cách gọi free () đều sử dụng một tham số trên đối số của nó. Ví dụ,
free((float *)velocity);
free((float *)acceleration);
free((char *)label);
trong đó mỗi con trỏ thuộc loại tương ứng (và khớp). Tôi thấy không có điểm nào trong việc này cả. Đó là mã rất cũ, vì vậy tôi sẽ tự hỏi liệu đó có phải là một thứ K & R không. Nếu vậy, tôi thực sự muốn hỗ trợ các trình biên dịch cũ có thể đã yêu cầu điều này, vì vậy tôi không muốn xóa chúng.
Có một lý do kỹ thuật để sử dụng các phôi? Tôi thậm chí không thấy nhiều lý do thực tế để sử dụng chúng. Điểm nhắc nhở bản thân về kiểu dữ liệu ngay trước khi giải phóng nó là gì?
EDIT: Câu hỏi này không phải là một bản sao của câu hỏi khác. Câu hỏi khác là một trường hợp đặc biệt của câu hỏi này, mà tôi nghĩ là hiển nhiên nếu những cử tri thân thiết sẽ đọc tất cả các câu trả lời.
Colophon: Tôi đang đưa ra dấu "const answer" vì đây là lý do thực sự của bonafide tại sao điều này có thể cần phải được thực hiện; tuy nhiên, câu trả lời về việc nó là một tùy chỉnh trước ANSI C (ít nhất là trong số một số lập trình viên) dường như là lý do nó được sử dụng trong trường hợp của tôi. Rất nhiều điểm tốt của nhiều người ở đây. Cảm ơn vì sự đóng góp của bạn.
void*
C chuẩn, mà chỉ có char*
. Vì vậy, nếu kết quả khảo cổ học của bạn tiết lộ mã đúc tham số thành free (), tôi tin rằng nó phải xuất phát từ khoảng thời gian đó hoặc được viết bởi một sinh vật từ thời điểm đó. Tôi không thể tìm thấy bất kỳ nguồn nào cho việc này, vì vậy tôi sẽ không trả lời.