memcpy_s 예제

런타임 제약 조건 위반이 검색되지 않으면 memcpy_s(), memmove_s(및 memset_s() 함수는 0을 반환합니다. 그렇지 않으면 0이 아닌 값을 반환합니다. memcpy_s 사본은 src에서 dest까지 바이트를 계산합니다. wmemcpy_s 사본은 넓은 문자(2바이트)를 계산합니다. 원본과 대상이 겹치는 경우 memcpy_s의 동작은 정의되지 않습니다. memmove_s를 사용하여 겹치는 영역을 처리합니다. memcpy_s(), memmove_s() 및 memset_s() 함수는 C11 표준인 부속서 K에 지정된 인터페이스를 검사하는 C11 경계의 일부입니다. 각각C11 표준에 정의된 명시적 런타임 제약 조건을 제공하기 위해 서로 다른 매개 변수 및 반환 형식을 제외하고 각각 각 memcpy(), memmove_s(및 memset_s() 함수에 동등한 기능을 제공합니다. runtime_constraint_handler(3C) 및 INCITS/ISO/IEC 9899:2011을 참조하십시오.

대상 버퍼의 크기 크기, memcpy_s및 와이드 문자(wchar_t)에 대한 바이트로 wmemcpy_s. memcpy_s() 및 memmove_s() 함수를 memcpy() 및 memmove() 함수에 대한 대체하면 소프트웨어 취약점을 방지할 수 있습니다. ISO/IEC TR 24731에 정의된 memcpy_s() 및 memmove_s() 함수는 해당 덜 안전한 memcpy() 및 memmove() 함수와 유사하지만 몇 가지 추가 보호 장치를 제공합니다. 이러한 함수의 보안 버전은 대상의 최대 크기를 지정하는 추가 인수를 추가합니다. memcpy_s() 및 memmove_s() 함수는 성공하면 0을 반환합니다. 소스 또는 대상 포인터가 NULL인 경우, 복사/이동할 지정된 문자 수가 대상 버퍼의 최대 크기보다 크거나 복사/이동할 문자 수 또는 최대 크기인 경우 비영값이 반환됩니다. 대상 버퍼는 RSIZE_MAX.1 memcpy_s(), memmove_s()) 및 memset_s() 함수를 런타임 제약 조건 처리기로 인해 다중 스레드 응용 프로그램에서 안전하게 사용할 수 없습니다. 자세한 내용은 runtime_constraint_handler(3C) man 페이지를 참조하십시오. memcpy_s, memmove_s, memset_s – 추가 안전 검사가 있는 메모리 작업 . . 다음은 memcpy()의 작동을 보여주는 샘플 C 프로그램입니다. 메모리, memccpy, memchr, memcmp, memcpy, memmove, memset, memmem-memmem-memmem() 함수는 길이 건초 더미의 메모리 영역에서 바늘의 서브 스트링 바늘의 첫 번째 발생의 시작을 찾습니다.

하위 문자열을 찾을 수 없는 경우 하위 문자열 또는 NULL의 시작에 대 한 포인터를 반환 합니다.