Arduino memcpy 및 memmove

  1. Arduino에서memcpy()함수를 사용하여 메모리 블록 복사
  2. Arduino에서memmove()함수를 사용하여 메모리 블록 복사

이 튜토리얼에서는memcpy()memmove()함수를 사용하여 한 변수에서 다른 변수로 메모리 블록을 복사하는 방법에 대해 설명합니다.

Arduino에서memcpy()함수를 사용하여 메모리 블록 복사

한 변수의 내용을 다른 변수에 복사하려면memcpy()함수를 사용하여 쉽게 수행 할 수 있습니다. 이 함수는 세 개의 입력 인수를 사용합니다. 첫 번째 인수는 데이터를 붙여 넣을 변수입니다. 두 번째 매개 변수는 데이터를 복사하려는 변수입니다. 세 번째 매개 변수는 두 번째 변수에서 복사해야하는 bytes의 수입니다. 예를 들어, 한 배열에서 다른 배열로 데이터를 복사하려고한다고 생각해보십시오. 아래 예제 코드를 참조하십시오.

int firstArray[10];
int secondArray[] = {1,2,3,4,5,6,7,8,9,0};
void setup(){
    memcpy(firstArray, secondArray, sizeof(secondArray));
}

위의 코드에서secondArray변수에있는 모든 데이터를firstArray변수에 복사했습니다. 세 번째 인수에서 복사하려는 바이트 수를 변경할 수 있습니다. 이 함수는 오버플로를 확인하지 않으며 두 변수의 주소가 겹치는 경우 필요한 출력을받지 못합니다. 따라서이 함수를 사용하는 대신memmove()함수를 사용할 수 있습니다.

Arduino에서memmove()함수를 사용하여 메모리 블록 복사

memcpy()함수는 오버플로가 있거나 동일한 메모리 주소의 경우 문제를 일으켰습니다. memcpy()함수 대신memmove()함수를 사용하여 위의 문제를 해결할 수 있습니다. memmove()함수는memcpy()함수와 동일한 작업을 수행하지만 오버플로를 무시합니다. 그래서 많은 문제를 해결할 것입니다. memmove()함수를 사용하여 위와 동일한 예제를 해결하는 것을 고려하십시오.

int firstArray[10];
int secondArray[] = {1,2,3,4,5,6,7,8,9,0};
void setup(){
    memmove(firstArray, secondArray, sizeof(secondArray));
}

위의 두 예제에서 결과는 동일하지만memmove()함수를 사용하여 오류 가능성을 제거 할 수 있습니다.