strdup - Man Page
duplicate a string
Library
Standard C library (libc, -lc)
Synopsis
#include <string.h> char *strdup(const char *s); char *strndup(const char s[.n], size_t n); char *strdupa(const char *s); char *strndupa(const char s[.n], size_t n);
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
strdup():
_XOPEN_SOURCE >= 500 || /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
strndup():
Since glibc 2.10: _POSIX_C_SOURCE >= 200809L Before glibc 2.10: _GNU_SOURCE
strdupa(), strndupa():
_GNU_SOURCE
Description
The strdup() function returns a pointer to a new string which is a duplicate of the string s. Memory for the new string is obtained with malloc(3), and can be freed with free(3).
The strndup() function is similar, but copies at most n bytes. If s is longer than n, only n bytes are copied, and a terminating null byte ('\0') is added.
strdupa() and strndupa() are similar, but use alloca(3) to allocate the buffer.
Return Value
On success, the strdup() function returns a pointer to the duplicated string. It returns NULL if insufficient memory was available, with errno set to indicate the error.
Errors
- ENOMEM
Insufficient memory available to allocate duplicate string.
Attributes
For an explanation of the terms used in this section, see attributes(7).
Interface | Attribute | Value |
---|---|---|
strdup(), strndup(), strdupa(), strndupa() | Thread safety | MT-Safe |
Standards
- strdup()
- strndup()
POSIX.1-2008.
- strdupa()
- strndupa()
GNU.
History
- strdup()
SVr4, 4.3BSD-Reno, 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)
Referenced By
alloca(3), ecalloc(3), fips_module_indicators.7ossl(7), gd_entry(3), gd_strtok(3), guestfs-hacking(1), ldap_memfree(3), libnbd(3), mandoc_malloc(3), mk-configure(7), mm(3), pmdaDaemon(3), pmdaFetch(3), pmemobj_alloc(3), pmfault(3), pmTraversePMNS(3), strcpy(3), string(3), string_copying(7), talloc_string(3), wcsdup(3).
The man pages strdupa(3), strndup(3) and strndupa(3) are aliases of strdup(3).