다음을 통해 공유


memcpy, wmemcpy

버퍼 간에 바이트를 복사합니다. 이러한 기능의 더 안전한 버전을 사용할 수 있습니다. memcpy_s, wmemcpy_s를 참조하십시오.

void *memcpy(    void *dest,    const void *src,    size_t count  ); wchar_t *wmemcpy(    wchar_t *dest,    const wchar_t *src,    size_t count );

매개 변수

  • dest
    새 버퍼입니다.

  • src
    복사할 버퍼입니다.

  • count
    복사할 문자 수입니다.

반환 값

dest의 값

설명

memcpy는 src에서 dest로 count 바이트를 복사하고 wmemcpy는 count 와이드 문자(2바이트)를 복사합니다. 소스와 대상이 겹치는 경우 memcpy의 동작이 정의되지 않습니다. memmove를 사용하면 겹치는 영역을 처리할 수 있습니다.

보안 정보보안 정보

대상 버퍼의 크기가 소스 버퍼의 크기보다 크거나 같아야 합니다.자세한 내용은 버퍼 오버런 방지를 참조하십시오.

보안 정보보안 정보

memcpy의 부적합한 사용으로 인해 매우 많은 버퍼 오버런과 보안 악용 가능성이 추적되었으므로 이 함수는 SDL(Security Development Lifecycle)에 의해 "금지" 항목으로 분류되었습니다.일부 VC++ 라이브러리 클래스는 memcpy를 계속 사용할 수 있습니다.또한 VC++ 컴파일러 최적화 프로그램에서 memcpy에 대한 호출을 내보내는 경우도 있습니다.Visual C++ 제품은 SDL 프로세스에 따라 개발되었으므로 이처럼 금지된 함수의 사용이 철저하게 평가되었습니다.라이브러리에서 이러한 함수를 사용하는 경우에는 이러한 호출을 통해 버퍼 오버런이 허용되지 않도록 호출을 면밀하게 검사했습니다.컴파일러의 경우 특정 코드 패턴이 memcpy의 패턴과 동일한 것으로 인식되어 함수 호출로 바뀌는 경우가 있습니다.이러한 경우에는 memcpy를 사용해도 원래 지침처럼 위험하지 않습니다. 이러한 패턴은 성능이 조정된 memcpy 함수에 대한 호출로 최적화되었을 뿐이기 때문입니다."안전한" CRT 함수를 사용한다고 해서 보안이 보장되는 것은 아니듯이(위험 가능성만 낮아질 뿐임), "금지된" 함수를 사용한다고 해서 반드시 위험한 것도 아니며 보안을 유지하려면 더욱 철저한 확인이 필요할 뿐입니다.

VC++ 컴파일러 및 라이브러리의 memcpy 사용은 매우 철저하게 확인되었으므로 일반적으로 SDL과 호환되는 코드 내에서도 이러한 호출이 허용됩니다.응용 프로그램 소스 코드에 포함된 memcpy 호출은 보안 전문가가 해당 사용을 검토한 경우에만 SDL과 호환됩니다.

_CRT_SECURE_DEPRECATE_MEMORY 상수가 아래 예제처럼 함수를 사용하지 않기 위해 포함 문 이전에 정의되는 경우에만 memcpy 및 wmemcpy 함수가 사용되지 않습니다.

#define _CRT_SECURE_DEPRECATE_MEMORY
#include <memory.h>

또는

#define _CRT_SECURE_DEPRECATE_MEMORY
#include <wchar.h>

요구 사항

루틴

필수 헤더

memcpy

<memory.h> 또는 <string.h>

wmemcpy

<wchar.h>

호환성에 대한 자세한 내용은 소개 단원의 호환성 부분을 참조하십시오.

예제

memcpy를 사용하는 방법에 대한 샘플은 memmove를 참조하십시오.

참고 항목

참조

버퍼 조작

_memccpy

memchr, wmemchr

memcmp, wmemcmp

memmove, wmemmove

memset, wmemset

strcpy_s, wcscpy_s, _mbscpy_s

strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l