strdup?

#include <string.h>

    char *strdup(const char *s);

Linux manpage 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).

해석 및 부연설명

: 새로 메모리를 할당하여 문자열 s를 복붙한 후 시작주소를 반환한다. mallocstrcpy가 합쳐진 함수라고 보면 된다.

ex)

char	str[] = "abcdefg";
char	*new;

new = strdup(str);
printf("%s\n", new);

코드 실행 결과

abcdefg

char형 포인터 new에 정상적으로 메모리가 할당된 후 str의 문자열이 복사되었다.

의문점 및 생각해볼점

딱히 없다.


ft_strdup 구현

char	*ft_strdup(const char *src)
{
	char	*str;
	char	*result;

	str = (char *)malloc((ft_strlen(src) + 1) * sizeof(char));
	if (!str)
		return (NULL);
	result = str;
	while (*src)
		*str++ = *src++;
	*str = 0;
	return (result);
}