The
strdup() function allocates sufficient memory for a copy of the string
str, does the copy, and returns a pointer to it. The pointer may subsequently be used as an argument to the function
free(3).
If insufficient memory is available,
NULL is returned.
The
strndup() function copies at most
len characters from the string
str always
NUL terminating the copied string.