개발/C

[C] 곱한 값이 오버플로우인지 확인하기

2024. 3. 1. 23:28

calloc 함수 man 페이지

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 페이지

반응형