memmove
: wmemmove
한 버퍼를 다른 버퍼로 이동합니다. 이러한 함수의 더 안전한 버전을 사용할 수 있습니다. memmove_s
, wmemmove_s
를 참조하세요.
구문
void *memmove(
void *dest,
const void *src,
size_t count
);
wchar_t *wmemmove(
wchar_t *dest,
const wchar_t *src,
size_t count
);
매개 변수
dest
대상 개체입니다.
src
소스 개체입니다.
count
복사할 바이트(memmove
) 또는 문자 (wmemmove
) 수입니다.
반환 값
dest
의 값
설명
count
바이트(memmove
) 또는 문자(wmemmove
)를 src
에서 dest
로 복사합니다. 원본 영역과 대상 영역의 일부가 겹치는 경우 두 함수 모두 겹치는 영역의 원래 원본 바이트가 덮어쓰기 전에 복사되도록 합니다.
보안 참고 사항 대상 버퍼가 이동된 문자 수를 수용할 만큼 충분히 큰지 확인합니다. 자세한 내용은 버퍼 오버런 방지를 참조하세요.
memmove
및 wmemmove
함수는 다음 예와 같이 #include
문 앞에 상수 _CRT_SECURE_DEPRECATE_MEMORY
가 정의된 경우에는 사용되지 않습니다.
#define _CRT_SECURE_DEPRECATE_MEMORY
#include <string.h>
또는
#define _CRT_SECURE_DEPRECATE_MEMORY
#include <wchar.h>
요구 사항
루틴에서 반환된 값 | 필수 헤더 |
---|---|
memmove |
<string.h> |
wmemmove |
<wchar.h> |
호환성에 대한 자세한 내용은 호환성을 참조하세요.
예시
// crt_memcpy.c
// Illustrate overlapping copy: memmove
// always handles it correctly; memcpy may handle
// it correctly.
//
#include <memory.h>
#include <string.h>
#include <stdio.h>
char str1[7] = "aabbcc";
int main( void )
{
printf( "The string: %s\n", str1 );
memcpy( str1 + 2, str1, 4 );
printf( "New string: %s\n", str1 );
strcpy_s( str1, sizeof(str1), "aabbcc" ); // reset string
printf( "The string: %s\n", str1 );
memmove( str1 + 2, str1, 4 );
printf( "New string: %s\n", str1 );
}
The string: aabbcc
New string: aaaabb
The string: aabbcc
New string: aaaabb