Skip to main content

이름

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 바이트 만 복사합니다. sn 보다 길면 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)