Estou trabalhando em uma base de código antiga e praticamente toda chamada de free () usa uma conversão em seu argumento. Por exemplo,
free((float *)velocity);
free((float *)acceleration);
free((char *)label);
onde cada ponteiro é do tipo correspondente (e correspondente). Não vejo sentido em fazer isso. É um código muito antigo, então fico me perguntando se é uma coisa de K&R. Nesse caso, desejo realmente oferecer suporte aos compiladores antigos que possam ter exigido isso, então não quero removê-los.
Existe uma razão técnica para usar esses modelos? Não vejo nem uma razão pragmática para usá-los. Qual é o sentido de nos lembrar do tipo de dados antes de liberá-lo?
Edição: Esta pergunta não é uma duplicata da outra pergunta. A outra pergunta é um caso especial desta pergunta, que eu acho óbvio se os eleitores próximos leiam todas as respostas.
Colophon: Estou dando a "resposta constante" a marca de seleção porque é uma verdadeira razão genuína pela qual isso pode precisar ser feito; no entanto, a resposta sobre ser um costume pré-ANSI C (pelo menos entre alguns programadores) parece ser o motivo pelo qual foi usada no meu caso. Muitos pontos positivos por muitas pessoas aqui. Obrigado por suas contribuições.
void*
no C pré-padrão, mas apenas char*
. Portanto, se suas descobertas arqueológicas revelarem código que lança o parâmetro para free (), acredito que deve ser daquele período ou ser escrito por uma criatura daquela época. Não consigo encontrar nenhuma fonte para isso, então evitarei responder.