NAME

memcmp - 메모리 영역 비교하기

SYNOPSIS

#include <string.h>

int memcmp(const void *s1, const void *s2, size_t n);

DESCRIPTION

memcmp() 함수는 메모리 영역 s1s2의 처음 n 개 바이트를 (각각 unsigned char로 해석해서) 비교한다.

RETURN VALUE

memcmp() 함수는 s1의 처음 n 바이트가 s2의 처음 n 바이트보다 작거나, 일치하거나, 큰 경우에 0보다 작거나, 같거나, 큰 정수를 반환한다.

0 아닌 반환 값의 부호는 s1s2에서 첫 번째로 다른 (unsigned char 타입으로 해석한) 바이트 쌍의 값 차이의 부호에 의해 정해진다.

n이 0이면 반환 값이 0이다.

ATTRIBUTES

이 절에서 사용하는 용어들에 대한 설명은 attributes(7)를 보라.

인터페이스 속성
memcmp() 스레드 안전성 MT-Safe

CONFORMING TO

POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.

NOTES

암호학적 비밀값처럼 보안에 중요한 데이터를 비교하는 데 memcmp()를 쓰지 말아야 한다. 같은 바이트 수에 따라 비교에 필요한 CPU 시간이 달라지기 때문이다. 대신 고정된 시간에 비교를 수행하는 함수가 필요하다. 일부 운영 체제에서 그런 함수를 제공하지만 (예: NetBSD의 consttime_memequal()) POSIX에는 그런 함수가 명세돼 있지 않다. 리눅스에서 그런 함수를 직접 구현해야 할 수도 있다.

SEE ALSO

bcmp(3), bstring(3), strcasecmp(3), strcmp(3), strcoll(3), strncasecmp(3), strncmp(3), wmemcmp(3)


2021-03-22