memcpy_s, wmemcpy_s
버퍼 사이의 바이트를 복사합니다. CRT의 보안 기능에 설명된 대로 보안 향상 기능이 포함된 memcpy, wmemcpy 버전입니다.
errno_t memcpy_s(
void *dest,
size_t numberOfElements,
const void *src,
size_t count
);
errno_t wmemcpy_s(
wchar_t *dest,
size_t numberOfElements,
const wchar_t *src,
size_t count
);
매개 변수
dest
새 버퍼입니다.numberOfElements
대상 버퍼의 크기입니다.src
복사할 버퍼입니다.count
복사할 문자 수입니다.
반환 값
성공 시 0이고, 실패 시 오류 코드입니다.
오류 조건
dest |
numberOfElements |
src |
반환 값 |
dest의 내용입니다. |
---|---|---|---|---|
NULL |
any |
any |
EINVAL |
수정 안 됨 |
any |
any |
NULL |
EINVAL |
dest는 0이 되었습니다. |
any |
< count |
any |
ERANGE |
dest는 0이 되었습니다. |
설명
memcpy_s 는 src 에서 dest 로 count 바이트를 복사합니다. wmemcpy_s 는 count 와이드 문자를 복사합니다. 원본과 대상이 겹치면 memcpy_s 동작이 지정되지 않습니다. memmove_s 를 사용하면 겹치는 영역을 처리할 수 있습니다.
이러한 함수는 해당 함수 매개 변수의 유효성을 검사합니다. dest 또는 src가 null 포인터이거나, numberOfElements이 버퍼에 너무 작다면, 이러한 함수들은 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기를 호출합니다. 계속해서 실행하도록 허용된 경우, 이러한 함수는 EINVAL를 반환하고 errno를 EINVAL로 설정합니다.
요구 사항
루틴 |
필수 헤더 |
---|---|
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");
}
해당 .NET Framework 항목
해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.
참고 항목
참조
strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l
strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l