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. 자세한 내용은 플랫폼 호출 예제.

참고 항목

참조

버퍼 조작

_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