개발/C
[C] 곱한 값이 오버플로우인지 확인하기
챀
2024. 3. 1. 23:28
calloc 함수는
"첫 번째 인자 nmemb"와 "두 번째 인자 size"를 곱한 값에
int 범위를 초과하는 오버플로우가 발생하면
에러를 반환한다고 되어 있다.
그렇다면 두 수를 곱했을 때 오버플로우가 발생했는지 어떻게 알 수 있을까?
a * b = c
(1) 두 정수 a와 b를 곱해서 c가 나왔다고 치자.
c / a = b
(2) c를 a로 나누면 b다.
c / a =/= b
(3) (2)가 아니라면 오버플로우다.
알려주신 동료 w에게 제리 인사짤을 바치며.
참고자료
1. 동료 w의 도움
2. 리눅스 calloc man 페이지
반응형