나는 오래된 코드베이스에서 일하고 있으며 free ()의 모든 호출은 인수에 캐스트를 사용합니다. 예를 들어
free((float *)velocity);
free((float *)acceleration);
free((char *)label);
여기서 각 포인터는 해당하는 (및 일치하는) 유형입니다. 나는 이것에 전혀 아무런 의미가 없다. 매우 오래된 코드이므로 K & R인지 궁금합니다. 그렇다면 실제로이를 필요로했던 오래된 컴파일러를 지원하고 싶기 때문에 제거하고 싶지 않습니다.
이 캐스트를 사용해야하는 기술적 이유가 있습니까? 나는 그것들을 사용해야 할 실용적인 이유를 많이 보지 못합니다. 데이터 유형을 해제하기 직전에 상기시키는 것이 요점은 무엇입니까?
편집 :이 질문은 다른 질문과 중복 되지 않습니다 . 다른 질문은이 질문의 특별한 경우입니다. 가까운 유권자들이 모든 답을 읽을 것인지는 분명합니다.
Colophon : 이것이 "const answer"에 체크 표시를하는 이유는 이것이 실제적인 이유이기 때문입니다. 그러나 (ANSI C 이전의 관습) (적어도 일부 프로그래머 중 하나)에 대한 대답은 그것이 내 경우에 사용 된 이유 인 것 같습니다. 많은 사람들의 좋은 점이 많습니다. 기부 해 주셔서 감사합니다.
void*
사전 표준 C에는 없었지만 오직 믿었다 char*
. 따라서 귀하의 고고 학적 발견으로 매개 변수를 free ()로 캐스팅하는 코드가 밝혀지면 그 시간 또는 그 당시의 생물체가 작성해야한다고 생각합니다. 나는 이것에 대한 어떤 출처도 찾을 수 없으므로 대답하지 않을 것이다.