반응형

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;
}

 

반응형
블로그 이미지

자연&사람

행복한 개발자 programmer since 1995.

,