반응형
strdup(3)
#include <string.h>
char *strdup(const char *s);
strdup(3)함수는 문자열 s 길이 + 1 크기를 malloc(3)으로 할당후 문자열 s를 복사한 후 return합니다.
malloc(3)한 데이터를 return하므로 return 받은 메모리는 반드시 free(3)를 통하여 메모리를 해제해야 합니다.
strdup(3)은 malloc(3) + strcpy(3) 과 같습니다.
파라미터
s
- 복제할 문자열
RETURN
NULL 아님
- 정상적으로 복제한 문자열
NULL
-문자열 복제가 실패하였으며, 상세한 오류 내용은 errno에 설정됩니다.
ENOMEM : 문자열 복제를 위한 메모리 할당에 실패하였습니다.
활용 예제
#include <string.h>
#include <stdio.h>
int main(int argc, char **argv)
{
char *ptr;
char src[256];
......
/* strdup(3)의 return은 반드시 pointer로 선언된 변수이어야 합니다. */
if((ptr = strdup(src)) == NULL) {
fprintf(stderr, "문자열 복제를 위한 메모리가 부족합니다.\n");
return 1;
}
...
/* free(3)로 메모리 해제를 하지 않으면 메모리 leak이 발생합니다. */
free(ptr);
......
return 0;
}
반응형
'C언어 header > string.h' 카테고리의 다른 글
strchr(3) - 문자열에서 문자 검색 (0) | 2019.09.25 |
---|---|
strndup(3) - n바이트 문자열을 새로운 메모리 할당후 복제 (0) | 2019.09.25 |
strncasecmp(3) - 문자열을 n바이트까지 문자열 비교. (0) | 2019.09.25 |
strcasecmp(3) - 대소문자 구별없이 문자열의 끝까지 비교 (0) | 2019.09.25 |
strncmp(3) - 문자열을 n바이트까지 문자열 비교 (0) | 2019.09.25 |