memcpy_s
, wmemcpy_s
버퍼 간에 바이트를 복사합니다. 이러한 함수는 memcpy
버전, CRT 보안 기능에 설명된 것 처럼 보안 기능이 향상된 wmemcpy
입니다.
구문
errno_t memcpy_s(
void *dest,
size_t destSize,
const void *src,
size_t count
);
errno_t wmemcpy_s(
wchar_t *dest,
size_t destSize,
const wchar_t *src,
size_t count
);
매개 변수
dest
새 버퍼입니다.
destSize
대상 버퍼의 크기(바이트 memcpy_s
) 및 와이드 문자(wchar_t
)의 크기 wmemcpy_s
입니다.
src
복사할 버퍼입니다.
count
복사할 문자 수입니다.
반환 값
성공 시 0이고, 실패 시 오류 코드입니다.
오류 조건
dest |
destSize |
src |
count |
반환 값 | dest 의 내용 |
---|---|---|---|---|---|
any | any | any | 0 | 0 | Not modified |
NULL |
any | any | 0이 아닌 값 | EINVAL |
Not modified |
any | any | NULL |
0이 아닌 값 | EINVAL |
dest 가 0이 됨 |
any | < count |
any | 0이 아닌 값 | ERANGE |
dest 가 0이 됨 |
설명
memcpy_s
(은)는 count
바이트를 src
에서 dest
(으)로 복사합니다; wmemcpy_s
(은)는 와이드 문자를 count
(으)로 복사합니다. 원본 및 대상 지역이 겹치면 memcpy_s
동작이 정의되지 않습니다. memmove_s
를 사용하면 겹치는 영역을 처리할 수 있습니다.
이러한 함수는 해당 함수 매개 변수의 유효성을 검사합니다. 0이 아니거나 dest
null 포인터이거나 destSize
src
보다 count
작은 경우 count
이러한 함수는 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기를 호출합니다. 실행을 계속하도록 허용된 경우 이러한 함수는 반환 EINVAL
또는 ERANGE
반환 값으로 설정합니다 errno
.
기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.
요구 사항
루틴에서 반환된 값 | 필수 헤더 |
---|---|
memcpy_s |
<memory.h> 또는 <string.h> |
wmemcpy_s |
<wchar.h> |
호환성에 대한 자세한 내용은 호환성을 참조하세요.
예시
// crt_memcpy_s.c
// Copy memory in a more secure way.
#include <memory.h>
#include <stdio.h>
int main()
{
int a1[10], a2[100], i;
errno_t err;
// Populate a2 with squares of integers
for (i = 0; i < 100; i++)
{
a2[i] = i*i;
}
// Tell memcpy_s to copy 10 ints (40 bytes), giving
// the size of the a1 array (also 40 bytes).
err = memcpy_s(a1, sizeof(a1), a2, 10 * sizeof (int) );
if (err)
{
printf("Error executing memcpy_s.\n");
}
else
{
for (i = 0; i < 10; i++)
printf("%d ", a1[i]);
}
printf("\n");
}
0 1 4 9 16 25 36 49 64 81
참고 항목
버퍼 조작
_memccpy
memchr
, wmemchr
memcmp
, wmemcmp
memmove
, wmemmove
memset
, wmemset
strcpy
, , wcscpy
_mbscpy
strncpy
, _strncpy_l
, wcsncpy
, _wcsncpy_l
, _mbsncpy
_mbsncpy_l
strncpy_s
, _strncpy_s_l
, wcsncpy_s
, _wcsncpy_s_l
, _mbsncpy_s
_mbsncpy_s_l