@memmove

@memmove

출처: Zig Documentation

본문

@memmove(dest, source) void

@memmove는 한 메모리 영역의 바이트를 다른 영역으로 통째로 복사하는 내장 함수예요. 이름에서도 @memcpy와 비슷하다는 게 느껴지죠? 가장 큰 차이는 두 영역이 겹쳐도 된다는 점이에요. @memcpy는 겹치는 영역을 건드리면 안 되지만, @memmove는 영역이 겹쳐도 안전하게 복사해 줘요.

dest는 복사받을 대상이라 바꿀 수 있어야 해요. 변경 가능한 슬라이스(mutable slice), 변경 가능한 배열 포인터, 아니면 변경 가능한 many-item 포인터면 되는데, 정렬(alignment)이나 요소 타입은 어떤 것이든 괜찮아요.

source는 원본이니 바꿀 필요는 없어요. 슬라이스, 배열 포인터, 또는 many-item 포인터면 되고, 역시 정렬과 요소 타입은 자유로워요. 다만 source의 요소 타입과 dest의 요소 타입은 메모리 안에서의 표현(in-memory representation)이 같아야 해요.

길이 조건은 for 루프에서와 같아요. sourcedest 중 적어도 하나는 길이를 제공해야 하고, 둘 다 길이를 준다면 그 두 길이는 서로 같아야 해요.

더 알아보기

  • @memcpy: 영역이 겹치면 안 되는 바이트 복사 내장 함수
  • @memmove — 원문 문서