Я працюю над старою базою коду і майже кожен виклик free () використовує роль аргументу. Наприклад,
free((float *)velocity);
free((float *)acceleration);
free((char *)label);
де кожен вказівник має відповідний (і відповідний) тип. Я не бачу сенсу робити це взагалі. Це дуже старий код, тому мені залишається цікаво, чи це K&R річ. Якщо так, я фактично хочу підтримати старі компілятори, які, можливо, цього вимагали, тому не хочу їх видаляти.
Чи є технічні причини використовувати ці ролі? Я навіть не бачу багато прагматичних причин використовувати їх. Який сенс нагадувати собі тип даних безпосередньо перед тим, як звільняти їх?
EDIT: Це запитання не є дублікатом іншого питання. Інше питання - це особливий випадок цього питання, який, на мою думку, є очевидним, якби близькі виборці прочитали всі відповіді.
Колофон: Я даю галочку "const відповідь", тому що це справжня причина, чому це може знадобитися зробити; проте відповідь про те, що це звичай до ANSI C (принаймні серед деяких програмістів), здається, є причиною його використання в моєму випадку. Тут багато хороших балів. Дякую за внесок.
void*
в попередньому стандарті C це було не тільки, а тільки char*
. Отже, якщо ваші археологічні знахідки виявляють код, який передає параметр free (), я вважаю, що він повинен бути або з того періоду часу, або написаний істотою з того часу. Я не можу знайти жодного джерела для цього, тому не хочу відповідати.