memcpy_s, wmemcpy_s
사이의 버퍼 복사본 바이트입니다.이러한 버전의 있습니다 memcpy, wmemcpy 와 보안 기능 향상에 설명 된 대로 CRT의 보안 기능.
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 |
모든 |
모든 |
EINVAL |
수정 되지 않음 |
모든 |
모든 |
NULL |
EINVAL |
dest삭제 됩니다. |
모든 |
< count |
모든 |
ERANGE |
dest삭제 됩니다. |
설명
memcpy_scopies count bytes from src to dest; wmemcpy_s복사 count 와이드 문자 (2 바이트)입니다.원본과 대상이 겹칠 경우, 동작을 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