std:: memmove
|
헤더 파일에 정의됨
<cstring>
|
||
|
void
*
memmove
(
void
*
dest,
const
void
*
src,
std::
size_t
count
)
;
|
||
다음 작업을 순서대로 수행합니다:
- 암시적으로 생성 합니다 dest 에 객체를.
- 복사합니다 count 개의 문자를 (마치 unsigned char 타입인 것처럼, 이하 동일) src 가 가리키는 객체로부터 임시 배열 arr 로, 여기서 arr 은 dest 와 src 가 가리키는 객체와 겹치지 않습니다.
- 복사합니다 count 개의 문자를 arr 에서 dest 가 가리키는 객체로.
만약 dest 또는 src 가 null 포인터 또는 유효하지 않은 포인터 인 경우, 동작은 정의되지 않습니다.
목차매개변수
반환값적합한 생성된 객체가 있으면 해당 객체에 대한 포인터를 반환하고, 그렇지 않으면 dest 를 반환합니다. 참고 사항명세에서는 임시 버퍼가 사용된다고 명시되어 있지만, 이 함수의 실제 구현에서는 이중 복사나 추가 메모리 오버헤드가 발생하지 않습니다. 작은 count 의 경우 레지스터를 로드하고 기록할 수 있으며, 더 큰 블록의 경우 (glibc 및 bsd libc에서) 일반적인 접근 방식은 대상이 소스보다 먼저 시작하는 경우 버퍼의 시작부터 순방향으로 바이트를 복사하고, 그렇지 않은 경우 끝에서 역방향으로 복사하며, 전혀 겹치는 부분이 없을 때는 std::memcpy 로 폴백합니다.
strict aliasing
이 동일한 메모리를 서로 다른 두 타입의 값으로 검사하는 것을 금지하는 경우,
예제
이 코드 실행
출력: 1234567890 1234456890 결함 보고서다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
참고 항목
| |||||||||||||||||||||||||||||||||