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 페이지
반응형
'개발 > C' 카테고리의 다른 글
[C] lstmap 구현하기. 주의사항 포함 (0) | 2024.03.06 |
---|---|
[C][TIL] strlcat, memcmp 함수 구현 (0) | 2024.03.03 |