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
바이트를 복사한다. s
가 n
보다 길면 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