[libft] ft_strdup
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를 복붙한 후 시작주소를 반환한다. malloc
과 strcpy
가 합쳐진 함수라고 보면 된다.
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);
}