Namespaces
Variants
Actions

strdup

From cppreference.com
< c‎ | experimental‎ | dynamic
Merged into ISO C The functionality described on this page was merged into the mainline ISO C standard as of 6/2019, see strdup (since C23)
Defined in header <string.h>
char * strdup( const char *str1 );
(dynamic memory TR)

Returns a pointer to a null-terminated byte string, which is a duplicate of the string pointed to by str1. The returned pointer must be passed to free to avoid a memory leak.

If an error occurs, a null pointer is returned and errno may be set.

As all functions from Dynamic Memory TR, strdup is only guaranteed to be available if __STDC_ALLOC_LIB__ is defined by the implementation and if the user defines __STDC_WANT_LIB_EXT2__ to the integer constant 1 before including string.h.

[edit] Parameters

str1 - pointer to the null-terminated byte string to duplicate

[edit] Return value

A pointer to the newly allocated string, or a null pointer if an error occurred.

[edit] Notes

The function is identical to the POSIX strdup.

[edit] Example

Run this code
#ifdef __STDC_ALLOC_LIB__
#define __STDC_WANT_LIB_EXT2__ 1
#else
#define _POSIX_C_SOURCE 200809L
#endif
 
#include <string.h>
#include <assert.h>
#include <stdlib.h>
 
int main(void)
{
 const char *s1 = "String";
 char *s2 = strdup(s1);
 assert (strcmp (s1, s2) == 0);
 free (s2);
}

[edit] See also

(dynamic memory TR)
allocate a copy of a string up to specified size
(function) [edit]
copies one string to another
(function) [edit]
allocates memory
(function) [edit]
Retrieved from "https://en.cppreference.com/mwiki/index.php?title=c/experimental/dynamic/strdup&oldid=123996"

AltStyle によって変換されたページ (->オリジナル) /