C언어 header/string.h
memmove(3) - memory 영역간 데이터 복제(overlap 보완)
자연&사람
2019. 9. 25. 22:54
반응형
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));
반응형