반응형
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));
반응형
'C언어 header > string.h' 카테고리의 다른 글
memchr(3) - 1바이트의 데이터 찾기 (0) | 2019.09.25 |
---|---|
memcmp(3) - 두 메모리 영역의 데이터 비교 (2) | 2019.09.25 |
memccpy(3) - memory 영역간 데이터 복제(특정 문자까지) (0) | 2019.09.25 |
memcpy(3) - memory 영역간 데이터 복제 (0) | 2019.09.25 |
memset(3) - 메모리 초기화 (0) | 2019.09.25 |