memmove(3)

#include <string.h>

void *memmove(void *dest, const void *src, size_t n);

memmove(3)는 src의 n 바이트 데이터를 dest에 복제합니다. memmove(3)는 메모리 복제시에 src와 dest변수의 메모리 영역이 overlap되더라도 데이터 복제를 정상적으로 수행합니다. memmove(3)는 메모리의 overlap이 발생하면 src를 임시영역으로 복제를 한 후에, 임시로 복제한 영역의 데이터를 dest에 복제합니다. 내부적으로 메모리할당과 같은 부하가 발생할 수 있습니다.

 

 

파라미터

dest
    - 복제될 메모리 영역(destination / target memory), 
    - dest가 NULL이면 비정상적인 동작을 합니다. (coredump)
src
    - 복제할 메모리 영역(source memory)
    - src가 NULL이면 OS마다 다르지만, 비정상적인 동작을 할 수 있습니다. (LINUX는 coredump 발생)
n
    - 복제할 데이터의 바이트수

 

RETURN

dest
    - 복제된 dest의 시작 위치를 return 합니다.

 


활용 예제

 

Sample). data에 저장된 전체 데이터를 4바이트 뒤로 복사 

#include <string.h>

......

    char data[1024] = "1234567890ABCDEFG";
    char *ptr = data + 4;

    ......
    
    memmove(ptr, data, strlen(data));

 

블로그 이미지

사용자 자연&사람

행복한 개발자 programmer since 1995.

댓글을 달아 주세요