NAME

strdup, strndup, strdupa, strndupa - 문자열 복제하기

SYNOPSIS

#include <string.h>

char *strdup(const char *s);

char *strndup(const char *s, size_t n);
char *strdupa(const char *s);
char *strndupa(const char *s, size_t n);

glibc 기능 확인 매크로 요건 (feature_test_macros(7) 참고):

strdup():
_XOPEN_SOURCE >= 500
|| /* glibc 2.12부터: */ _POSIX_C_SOURCE >= 200809L
|| /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
strndup():
glibc 2.10부터:
_POSIX_C_SOURCE >= 200809L
glibc 2.10 전:
_GNU_SOURCE
strdupa(), strndupa():
_GNU_SOURCE

DESCRIPTION

strdup() 함수는 문자열 s의 복제본인 새 문자열에 대한 포인터를 반환한다. malloc(3)으로 새 문자열을 위한 메모리를 얻으므로 free(3)로 해제할 수 있다.

strndup() 함수는 이와 비슷하되, 최대 n 바이트를 복사한다. sn보다 길면 n 바이트만 복사하고 종료 널 바이트('\0')를 추가한다.

strdupa()strndupa()는 이와 비슷하되, alloca(3)를 써서 버퍼를 할당한다. GNU GCC 스위트를 쓸 때만 이용 가능하며 alloca(3)에서 설명하는 것과 같은 제약이 있다.

RETURN VALUE

성공 시 strdup() 함수는 복제 문자열의 포인터를 반환한다. 가용 메모리가 충분치 않은 경우 NULL을 반환하며 오류를 나타내도록 errno를 설정한다.

ERRORS

ENOMEM
복제 문자열을 할당할 메모리가 충분하지 않음.

ATTRIBUTES

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

인터페이스 속성
strdup(), strndup(), strdupa(), strndupa() 스레드 안전성 MT-Safe

CONFORMING TO

strdup()은 SVr4, 4.3BSD, POSIX.1-2001을 준수한다. strndup()은 POSIX.1-2008을 준수한다. strdupa()strndupa()는 GNU 확장이다.

SEE ALSO

alloca(3), calloc(3), free(3), malloc(3), realloc(3), string(3), wcsdup(3)


2021-03-22