.\" This file is part of the Public Domain C Library (PDCLib). .\" Permission is granted to use, modify, and / or redistribute at will. .\" .Dd .Dt strdup 3 .Os .\" .Sh NAME .Nm strdup .Nd string duplication .\" .Sh SYNOPSIS .Sy #define _XOPEN_SOURCE || _POSIX_C_SOURCE >= 200809L .In string.h .Fn "char *strdup" "const char *str" .Pp .Sy #define _POSIX_C_SOURCE >= 200809L .In string.h .Fn "char *strndup" "const char *str" "size_t len" .\" .Sh DESCRIPTION .Fn strdup allocates a new buffer of sufficient size as to be able to hold the entirety of .Va str , including the terminating character, and copies the contents of .Va str into it. .\" .Pp .Fn strndup allocates a buffer large enough to contain .Va len characters, plus a trailing null character, or sufficient to contain the entirety of .Va str including the trailing null character, whichever is smaller. The first .Va len characters of .Va str are then copied into it, and a null character appended. .\" .Pp The buffers returned by these functions must be released by a call to .Fn free . .\" .Sh SEE ALSO .Xr free 3 .Xr malloc 3 .Xr strcpy 3 .Xr strncpy 3 .\" .Sh STANDARDS .Fn strdup first specified in .St -xpg3 . Moved into POSIX, and .Fn strndup added, with .St -p1003.1-2008 .