stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc
1. 캐스팅은 하지 않아야 한다
- malloc() 함수를 사용하면서 실수로 <stdlib.h>헤더를 include 하지 않았을 때, malloc()의 결과값을 명시적으로 캐스팅했다면 오류를 숨기게 될 수 있다. (implicit function declaration)
- void *형은 자동으로 안전하게 다른 포인터 타입으로 형변환될것이다.
- 불필요한 캐스팅은 코드를 지저분하게 만든다. (답변자의 주관)
- 이런 상황에서 캐스팅은 오류가 발생할 수 있는 행동을 불필요하게 반복하는 것이다.
- 위의 내용은 C++가 아닌, C에 대한 것들이다.
2. 캐스팅은 필요하다
- 캐스팅은 코드를 C/C++ 양쪽에서 접근하기 쉽게 만든다. (C++에서는 반드시 캐스팅해야한다)
- 알맞은 헤더를 include하지 못할 수도 있다는 것은 캐스팅을 포기할 정도로 큰 문제가 아니다.
- 캐스팅은 개발자가 오류를 알아차리는 데(특히 포인터를 선언한 부분이 malloc()함수를 호출한 부분과 멀리 떨어져 있을 때) 도움을 준다.
반응형
'Code > C, C++' 카테고리의 다른 글
scanf 대신 fread 사용 시 참고 (0) | 2022.03.26 |
---|---|
가위바위보 (0) | 2021.11.21 |
VS2019 C/C++ IntelliSense 설정 (0) | 2021.04.17 |