이름
strdup, strndup, strdupa, strndupa – 문자열 복제
개요
#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 () :
_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE> = 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| / * glibc 2.12 이후 : * / _POSIX_C_SOURCE> = 200809L
strndup () :
glibc 2.10 이후 :
POSIX_C_SOURCE> = 200809L || _XOPEN_SOURCE> = 700
glibc 2.10 이전 :
_GNU_SOURCE
strdupa (), strndupa () : _GNU_SOURCE
기술
strdup () 함수는 문자열 s의 복제본 인 새 문자열에 대한 포인터를 반환합니다. 새로운 문자열을위한 메모리는 malloc (3)으로 얻어지며 free (3)로 해제 될 수 있습니다.
strndup () 함수도 비슷하지만 최대 n 바이트 만 복사합니다. s 가 n 보다 길면 n 바이트 만 복사되고 종료 널 바이트 ( ‘\ 0’)가 추가됩니다.
strdupa ()와 strndupa ()도 비슷하지만 alloca (3)를 사용하여 버퍼를 할당하십시오. GNU GCC 제품군을 사용할 때만 사용할 수 있으며 alloca (3)에서 설명한 것과 동일한 제한 사항이 있습니다.
반환 값
strdup () 함수는 중복 문자열에 대한 포인터를 반환하거나 메모리가 충분하지 않은 경우 NULL을 반환합니다.
오류
ENOMEM
중복 문자열 할당에 사용할 수있는 메모리가 부족합니다.
준수
strdup ()는 SVr4, 4.3BSD, POSIX.1-2001을 따른다. strndup ()는 POSIX.1-2008을 준수합니다. strdupa ()와 strndupa ()는 GNU 확장입니다.
참고 사항
alloca (3), calloc (3), free (3), malloc (3), realloc (3), string (3), wcsdup (3)
참조 인
설명 (1), 설명 (3), 설명 _strdup (3), 설명 _strdup_or_die (3), ldap_memfree (3), strcpy (3)